



  

<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

  


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f4bf1142976e4bbf.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-f661b49995ba0bd8.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-0b38d22346321c92.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-f1c62c9e70259b9f.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-f50cacf0a86b9929.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-e61d4f4ca17852c2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-39c10993d5603fac.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-73236c840c0c7d90.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-0de76f07cc035b10.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-fd1500c8744e40d6.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-54ba76e934a49d7c.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-456bd5deb85c7ecd.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-11ee8a031c040c1a.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-2d56bdb0166c0238.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automation_repo_mcp_servers","copilot_automations_pagination","copilot_chat_auto_mode_v2","copilot_chat_clear_model_selection_for_default_change","copilot_chat_header_reorder","copilot_chat_max_upsell","copilot_chat_models_browser_cache","copilot_chat_vision_dotcom_chat_ga_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_hide_hovercard","copilot_immersive_embedded_header_button","copilot_immersive_file_preview_keep_mounted","copilot_immersive_task_hyperlinking","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_early_stop","copilot_mission_control_environment_list_icons","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandbox_client_side_clone","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset","copilot_workbench_sunset_redirect","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","glc_code_quality_repo_settings_workflow_config","hide_github_models_ui","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_optimistic_updates","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_lazy_load_comment_box_suggestions","issues_optimistic_linked_branch_create","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_cookie_consent_banner","marketing_pages_search_explore_provider","memex_client_env_github_domain","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_checks_refetch_dedupe","merge_status_header_feedback","oauth_authorize_clickjacking_protection","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_commit_checks_dialog","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_feedback_dialog","pull_request_virtualization_image_estimate","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_pulls_dashboard_persistence","repo_pulls_dashboard_sidebar_links","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_banner_learn_copilot_sdk","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","ui_service_compute_proxy_control","ui_service_referrer_metrics","ui_service_staleness_detection","update_issue_suggestions","user_code_paste_ux","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workbench_store_readonly","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-e3d808ee18eb9784.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-87f87519f2bbba0e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-74e9766bd696d26a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-ecf766ea8a2c7fd6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-8e3d9c5d57d50312.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-cd1b421ad0ad7ed5.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-324a60c8becccc53.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.b6099d51b9e67b57.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-86a8f5de995615f8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e88088f989b27670.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-7cdf4e0db98b997c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-6b3c07383371bf58.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-36f036c13c2e3a4c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/kw-866fd9513ae95106.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r1-b075aab3204f32f9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7c5d1669717041f8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-5126390ff433704d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-549d25d0f366a901.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-19d067aae228a2c9.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-f3f5d71440009c48.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-76b18916d0c8ec4d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-5109c77d7ac61078.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-fbb00aaa3ab9abdf.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/04n-51c49ba758739f13.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-024971cb63acad59.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-364e19c63d726e9a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6ny-c969fbae697a356f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/yhq-3a209035a30b1a09.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z1v-da5b33b877bfa358.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-09f85d22a6c8931b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9y-81cfe57dc9040f3e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-41a4cf04cbd99503.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0p-81491ed0d9d666e2.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-87fda981566a000c.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.5858534b1c27f133.module.css" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-0470abdd78fff242.js" defer="defer"></script>
  
  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-12ebdc24dcff1ecc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-9a860680a5f230b9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-363f0ebf4f62f310.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-bf6f21d7e7a43c35.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fe-7576d9b281e2106a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wsr-5fd3071e5a9061ab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0n-ecadb2ffe6b01ba2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xv-51cb34754bda73a9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4u-6317ce1c31aed1db.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8s-d90ce3a169b741ed.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-de176c4ee471f2b3.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/eag-d9eea130fa716df9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y2-87df441f1bc5a264.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/kcz-607e36c8a3751cf0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/x4-65dba777efd828f3.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gzu-1a09248f686325f6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi0-e2f78de823e39ca9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/on-95be29ba1ef725d9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b1-1dbc371cef78c3c1.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0l5-c4edb8ab48c5846d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/c2z-c92998400310b94b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/f9-038758dcbfe08dab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0k-b7df0a74912a42bf.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sp-915c6643cc0d7d44.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/og-93ae8b358505d372.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b9-69d9b60a1b1fcd59.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ec-8ea7978d3fcd114e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/du-a401e69a37d95bcc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ql0-1c18210f6b9e2263.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/20-0a2e46387735f1f4.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dsj-cb1e4ddbce4f007b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-9f5235d335ab624b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ko6-9e80f7ac359e3c43.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/uw-8c275f7ac25b7cf6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bsb-4f4ac8c20da73fac.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/w5-13e3a7548bb20af9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fm-c00a7677663ba326.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z-45022d3da7b8817e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/h0-010921512138e12f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5p-ae5db0820116fb43.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8vq-b2af216e992e11ef.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/g5-88f2a4514daa19ca.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xc-f5d51b571cd317cb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/arw-51e8918a1b75a80f.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-5780cead61d34dfa.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.9d59d1018a52a53c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.de7a55ca73db5693.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/z.812a998e1961b84d.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/xc.13e027137438fd9f.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.3e1889ce559ebbdc.module.css" />

  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hu-1fc0b2a167afc025.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fb-ef2c91536abed646.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-1275ca430426c116.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.9d59d1018a52a53c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.a2d74169820112df.module.css" />


  <title>python-ndb/CHANGELOG.md at main · googleapis/python-ndb · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="show" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:c3d84fff-8271-021d-498f-b5f5339c9c2a">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="D1EA:20C7F:11477ED1:1027E348:6AAC9C39" data-pjax-transient="true"/><meta name="html-safe-nonce" content="0c33c5d61e701b4c3a99180e9dd755e05b05be2a30c28c4b64c3d87aad41ae6a" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMUVBOjIwQzdGOjExNDc3RUQxOjEwMjdFMzQ4OjZBQUM5QzM5IiwidmlzaXRvcl9pZCI6IjYzOTU0MzIxMTM0MzkyODQyODEiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="ea33ec9b6915f0ca5677f4675de30f6e85e60500aa82f33afcc8c67eb9abce25" data-pjax-transient="true"/>


    <meta name="hovercard-subject-tag" content="repository:171752887" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />





  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-turbo-transient="true" />

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-ndb - python-ndb/CHANGELOG.md at main · googleapis/python-ndb">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md" />

      <meta name="twitter:image" content="https://opengraph.githubassets.com/d11fc2ffa09244f70631a665f34ca80e67007f663ade49e8d8572bd908905b4e/googleapis/python-ndb" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="python-ndb/CHANGELOG.md at main · googleapis/python-ndb" /><meta name="twitter:description" content="This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-ndb - googleapis/python-ndb" />
  <meta property="og:image" content="https://opengraph.githubassets.com/d11fc2ffa09244f70631a665f34ca80e67007f663ade49e8d8572bd908905b4e/googleapis/python-ndb" /><meta property="og:image:alt" content="This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-ndb - googleapis/python-ndb" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="python-ndb/CHANGELOG.md at main · googleapis/python-ndb" /><meta property="og:url" content="https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md" /><meta property="og:description" content="This library has moved to https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-ndb - googleapis/python-ndb" />
  




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="87b02277f1a88f71022c708b22655ead06f335ffb2f288301950607be673d70f" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="0c5c6e5334a905d8f9521e09eadcffba484d422e0d262e07ff922e6bc18b2ac6" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="ec4c7b86d7b57240253150b827ea48b04e08d8760dc6553d2a04f62000f3fe0c" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="b485a9e5d5fef3a0529256dd6518ebc1f40bea8817ed2111389eeb587e6b5499" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <meta name="turbo-cache-control" content="no-cache" data-turbo-transient>

    <meta data-hydrostats="publish">

  <meta name="go-import" content="github.com/googleapis/python-ndb git https://github.com/googleapis/python-ndb.git">

  <meta name="octolytics-dimension-user_id" content="16785467" /><meta name="octolytics-dimension-user_login" content="googleapis" /><meta name="octolytics-dimension-repository_id" content="171752887" /><meta name="octolytics-dimension-repository_nwo" content="googleapis/python-ndb" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="171752887" /><meta name="octolytics-dimension-repository_network_root_nwo" content="googleapis/python-ndb" />
  



    

    <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="150f67e4e80cef756826b1ec1ae31f40579d6bf6" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/l7j-2ddd8b435dadae28.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-3f2ae39a88fc8542.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.9d59d1018a52a53c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.8ab0724db4d1b620.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          
          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2l-8671acba87bc0dcb.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/i26-f2ae65b837c90ae7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz5-23f28c0f388769c9.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/lht-26506ea833dda5be.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p1-76a75a6081059b19.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-82c347d20a13fb90.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-c4ca62c5e0e0318e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4s-c22d880230690e1f.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-5911ef094658e0d1.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.9d59d1018a52a53c.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.6a01c236ff527e7e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/4s.e3d02f110161be52.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-ndb%2Fblob%2Fmain%2FCHANGELOG.md","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=googleapis%2Fpython-ndb","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md\",\"user_id\":null}}","auth_hydro_click_hmac":"7d98a9cbf43b1073ad12b2308dfd1c8deafbc1c3cd1d131670e44ed81eff60bc","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-ndb%2Fblob%2Fmain%2FCHANGELOG.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7d98a9cbf43b1073ad12b2308dfd1c8deafbc1c3cd1d131670e44ed81eff60bc"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-ndb%2Fblob%2Fmain%2FCHANGELOG.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7d98a9cbf43b1073ad12b2308dfd1c8deafbc1c3cd1d131670e44ed81eff60bc"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=googleapis%2Fpython-ndb" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7d98a9cbf43b1073ad12b2308dfd1c8deafbc1c3cd1d131670e44ed81eff60bc"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-3f7298f3-fd77-42e6-b044-05e51a7a9cf4" aria-labelledby="tooltip-87f516c4-be85-4fe3-97f1-64bce1571069" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-87f516c4-be85-4fe3-97f1-64bce1571069" for="icon-button-3f7298f3-fd77-42e6-b044-05e51a7a9cf4" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>





  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main "
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <main id="js-repo-pjax-container" >
      
      
    


    



        <div class="flash flash-warn flash-full border-top-0 text-center text-bold py-2">
    This repository was archived by the owner on May 6, 2026. It is now read-only.
  </div>






  

    <div id="repository-container-header"  class="tmp-pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace>

        <div class="d-flex flex-nowrap flex-justify-end tmp-mb-3  tmp-px-3 tmp-px-lg-5" style="gap: 1rem;">

          <div class="flex-auto min-width-0 width-fit">
              
  <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2 tmp-mr-2">
    <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path>
</svg>
    
    <span class="author flex-self-stretch" itemprop="author">
      <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/googleapis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/googleapis">
        googleapis
</a>    </span>
    <span class="mx-1 flex-self-stretch color-fg-muted">/</span>
    <strong itemprop="name" class="mr-2 flex-self-stretch">
      <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/googleapis/python-ndb">python-ndb</a>
    </strong>

    <span></span><span class="Label Label--attention v-align-middle mr-1">Public archive</span>
  </div>


          </div>

          <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;">
              <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
    
      

  <li>
            <a href="/login?return_to=%2Fgoogleapis%2Fpython-ndb" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0c847a535b8ac5818871dcbb334f4a617cfdd3a4a471a4a6f5168c2cf2212559" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2 tmp-mr-2">
    <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path>
</svg>Notifications
</a>    <tool-tip id="tooltip-1724e114-3ce9-4bb9-9700-2c64433dd0cc" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip>

  </li>

  <li>
          <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Fgoogleapis%2Fpython-ndb" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:171752887,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="29dcb323d3b7099540d65e6bb9c8ee33d065c705002acb5dae7e465e62b58288" data-view-component="true" class="btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2 tmp-mr-2">
    <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>
</svg>Fork
    <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="68" data-view-component="true" class="Counter">68</span>
</a>
  </li>

  <li>
        <div data-view-component="true" class="BtnGroup d-flex">
        <a href="/login?return_to=%2Fgoogleapis%2Fpython-ndb" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:171752887,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6d401200061885dd4f8d77eedb3b54b2e867c292d447c6da4e3407ea4d6bad23" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2 tmp-mr-2">
    <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path>
</svg><span data-view-component="true" class="d-inline">
          Star
</span>          <span id="repo-stars-counter-star" aria-label="151 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="151" data-view-component="true" class="Counter js-social-count">151</span>
</a></div>
  </li>

</ul>

          </div>
        </div>

          <div id="responsive-meta-container" data-turbo-replace>
</div>


            <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 tmp-px-3 px-md-4 tmp-px-md-4 px-lg-5 tmp-px-lg-5">

  <ul data-view-component="true" class="UnderlineNav-body list-style-none">
      <li data-view-component="true" class="d-inline-flex">
  <a id="code-tab" href="/googleapis/python-ndb" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /googleapis/python-ndb" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-command-id="repositories:go-to-code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
    <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
</svg>
        <span data-content="Code">Code</span>
          <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="issues-tab" href="/googleapis/python-ndb/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /googleapis/python-ndb/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-command-id="repositories:go-to-issues" data-react-nav="issues-react" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
    <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
</svg>
        <span data-content="Issues">Issues</span>
          <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="pull-requests-tab" href="/googleapis/python-ndb/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /googleapis/python-ndb/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-command-id="repositories:go-to-pull-requests" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
    <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
</svg>
        <span data-content="Pull requests">Pull requests</span>
          <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="actions-tab" href="/googleapis/python-ndb/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /googleapis/python-ndb/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-command-id="repositories:go-to-actions" data-react-nav="actions-workflows" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
    <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
</svg>
        <span data-content="Actions">Actions</span>
          <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="projects-tab" href="/googleapis/python-ndb/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /googleapis/python-ndb/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-command-id="repositories:go-to-projects" data-react-nav="repo" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline">
    <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path>
</svg>
        <span data-content="Projects">Projects</span>
          <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="wiki-tab" href="/googleapis/python-ndb/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /googleapis/python-ndb/wiki" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g w" data-command-id="repositories:go-to-wiki" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Wiki&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline">
    <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path>
</svg>
        <span data-content="Wiki">Wiki</span>
          <span id="wiki-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="security-and-quality-tab" href="/googleapis/python-ndb/security" data-tab-item="i6security-and-quality-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /googleapis/python-ndb/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-command-id="repositories:go-to-security" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security and quality&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
    <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span data-content="Security and quality">Security and quality</span>
          <span id="security-and-quality-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="insights-tab" href="/googleapis/python-ndb/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /googleapis/python-ndb/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-command-id="repositories:go-to-insights" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
    <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
</svg>
        <span data-content="Insights">Insights</span>
          <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
</ul>
    <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 tmp-pr-3 pr-md-4 tmp-pr-md-4 pr-lg-5 tmp-pr-lg-5 right-0">      <action-menu data-select-variant="none" data-view-component="true">
  <focus-group direction="vertical" mnemonics retain>
    <button id="action-menu-145b473d-ab82-449b-bdb7-904520644722-button" popovertarget="action-menu-145b473d-ab82-449b-bdb7-904520644722-overlay" aria-controls="action-menu-145b473d-ab82-449b-bdb7-904520644722-list" aria-haspopup="true" aria-labelledby="tooltip-e81fa83e-ddee-4f52-8977-e9a555395af0" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual">
    <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
</svg>
</button><tool-tip id="tooltip-e81fa83e-ddee-4f52-8977-e9a555395af0" for="action-menu-145b473d-ab82-449b-bdb7-904520644722-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip>


<anchored-position data-target="action-menu.overlay" id="action-menu-145b473d-ab82-449b-bdb7-904520644722-overlay" anchor="action-menu-145b473d-ab82-449b-bdb7-904520644722-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true">
  <div data-view-component="true" class="Overlay Overlay--size-auto">
    
      <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone">          <action-list>
  <div data-view-component="true">
    <ul aria-labelledby="action-menu-145b473d-ab82-449b-bdb7-904520644722-button" id="action-menu-145b473d-ab82-449b-bdb7-904520644722-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap">
        <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-1b387be2-6edd-420e-91f6-c91cefbe7922" href="/googleapis/python-ndb" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
    <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Code
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-77b5e507-1cb3-431b-9adf-314cef66c9f1" href="/googleapis/python-ndb/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened">
    <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Issues
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-bab22d84-c84c-4528-9dbf-d8f9c455ca00" href="/googleapis/python-ndb/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request">
    <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Pull requests
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-00ecd19a-67a2-4c54-a7fa-2ec40795a42c" href="/googleapis/python-ndb/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play">
    <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Actions
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i4projects-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-90ddd863-85f3-4e6d-87b9-692f42e1c85a" href="/googleapis/python-ndb/projects" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table">
    <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Projects
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i5wiki-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-b442891f-b32f-4c6a-a9b6-97a45e7f3de9" href="/googleapis/python-ndb/wiki" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book">
    <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Wiki
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i6security-and-quality-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-25b947b4-7bff-4696-b763-0bf4b0acc402" href="/googleapis/python-ndb/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield">
    <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Security and quality
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i7insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-65b6c83d-a5e3-4f56-b0ca-005590ec85e3" href="/googleapis/python-ndb/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph">
    <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Insights
</span>      
</a>
  
</li>
</ul>    
</div></action-list>


</div>
      
</div></anchored-position>  </focus-group>
</action-menu></div>
</nav>

    </div>
  



<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
    <div id="repo-content-pjax-container" class="repository-content " >
    



    
      
    








<react-app
  app-name="code-view"
  initial-path="/googleapis/python-ndb/blob/main/CHANGELOG.md"
  style="display: block; min-height: calc(100vh - 64px);"
  data-attempted-ssr="true"
  data-ssr="true"
  data-lazy="false"
  data-alternate="false"
  data-data-router-enabled="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewBlobRoute":{"csv":null,"csvError":null,"headerInfo":{"toc":[{"level":1,"text":"Changelog","anchor":"changelog","htmlText":"Changelog"},{"level":2,"text":"2.4.0 (2025-12-15)","anchor":"240-2025-12-15","htmlText":"2.4.0 (2025-12-15)"},{"level":3,"text":"Features","anchor":"features","htmlText":"Features"},{"level":2,"text":"2.3.4 (2025-06-11)","anchor":"234-2025-06-11","htmlText":"2.3.4 (2025-06-11)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes","htmlText":"Bug Fixes"},{"level":2,"text":"2.3.3 (2025-05-09)","anchor":"233-2025-05-09","htmlText":"2.3.3 (2025-05-09)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-1","htmlText":"Bug Fixes"},{"level":2,"text":"2.3.2 (2024-07-15)","anchor":"232-2024-07-15","htmlText":"2.3.2 (2024-07-15)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-2","htmlText":"Bug Fixes"},{"level":2,"text":"2.3.1 (2024-03-16)","anchor":"231-2024-03-16","htmlText":"2.3.1 (2024-03-16)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-3","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation","htmlText":"Documentation"},{"level":2,"text":"2.3.0 (2024-03-01)","anchor":"230-2024-03-01","htmlText":"2.3.0 (2024-03-01)"},{"level":3,"text":"Features","anchor":"features-1","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-4","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-1","htmlText":"Documentation"},{"level":2,"text":"2.2.2 (2023-09-19)","anchor":"222-2023-09-19","htmlText":"2.2.2 (2023-09-19)"},{"level":3,"text":"Documentation","anchor":"documentation-2","htmlText":"Documentation"},{"level":2,"text":"2.2.1 (2023-09-15)","anchor":"221-2023-09-15","htmlText":"2.2.1 (2023-09-15)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-5","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-3","htmlText":"Documentation"},{"level":2,"text":"2.2.0 (2023-07-26)","anchor":"220-2023-07-26","htmlText":"2.2.0 (2023-07-26)"},{"level":3,"text":"Features","anchor":"features-2","htmlText":"Features"},{"level":3,"text":"Documentation","anchor":"documentation-4","htmlText":"Documentation"},{"level":2,"text":"2.1.1 (2023-02-28)","anchor":"211-2023-02-28","htmlText":"2.1.1 (2023-02-28)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-6","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-5","htmlText":"Documentation"},{"level":2,"text":"2.1.0 (2022-12-15)","anchor":"210-2022-12-15","htmlText":"2.1.0 (2022-12-15)"},{"level":3,"text":"Features","anchor":"features-3","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-7","htmlText":"Bug Fixes"},{"level":2,"text":"2.0.0 (2022-12-06)","anchor":"200-2022-12-06","htmlText":"2.0.0 (2022-12-06)"},{"level":3,"text":"⚠ BREAKING CHANGES","anchor":"-breaking-changes","htmlText":"⚠ BREAKING CHANGES"},{"level":3,"text":"Features","anchor":"features-4","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-8","htmlText":"Bug Fixes"},{"level":2,"text":"1.12.0 (2022-11-29)","anchor":"1120-2022-11-29","htmlText":"1.12.0 (2022-11-29)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-9","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-6","htmlText":"Documentation"},{"level":2,"text":"1.11.2 (2022-06-03)","anchor":"1112-2022-06-03","htmlText":"1.11.2 (2022-06-03)"},{"level":3,"text":"Documentation","anchor":"documentation-7","htmlText":"Documentation"},{"level":2,"text":"1.11.1 (2021-11-03)","anchor":"1111-2021-11-03","htmlText":"1.11.1 (2021-11-03)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-10","htmlText":"Bug Fixes"},{"level":2,"text":"1.11.0 (2021-10-28)","anchor":"1110-2021-10-28","htmlText":"1.11.0 (2021-10-28)"},{"level":3,"text":"Features","anchor":"features-5","htmlText":"Features"},{"level":2,"text":"1.10.5 (2021-10-08)","anchor":"1105-2021-10-08","htmlText":"1.10.5 (2021-10-08)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-11","htmlText":"Bug Fixes"},{"level":2,"text":"1.10.4 (2021-09-28)","anchor":"1104-2021-09-28","htmlText":"1.10.4 (2021-09-28)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-12","htmlText":"Bug Fixes"},{"level":2,"text":"1.10.3 (2021-09-07)","anchor":"1103-2021-09-07","htmlText":"1.10.3 (2021-09-07)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-13","htmlText":"Bug Fixes"},{"level":2,"text":"1.10.2 (2021-08-31)","anchor":"1102-2021-08-31","htmlText":"1.10.2 (2021-08-31)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-14","htmlText":"Bug Fixes"},{"level":2,"text":"1.10.1 (2021-08-11)","anchor":"1101-2021-08-11","htmlText":"1.10.1 (2021-08-11)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-15","htmlText":"Bug Fixes"},{"level":2,"text":"1.10.0 (2021-07-20)","anchor":"1100-2021-07-20","htmlText":"1.10.0 (2021-07-20)"},{"level":3,"text":"Features","anchor":"features-6","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-16","htmlText":"Bug Fixes"},{"level":2,"text":"1.9.0 (2021-06-07)","anchor":"190-2021-06-07","htmlText":"1.9.0 (2021-06-07)"},{"level":3,"text":"Features","anchor":"features-7","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-17","htmlText":"Bug Fixes"},{"level":2,"text":"1.8.0 (2021-04-06)","anchor":"180-2021-04-06","htmlText":"1.8.0 (2021-04-06)"},{"level":3,"text":"Features","anchor":"features-8","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-18","htmlText":"Bug Fixes"},{"level":2,"text":"1.7.3 (2021-01-21)","anchor":"173-2021-01-21","htmlText":"1.7.3 (2021-01-21)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-19","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-8","htmlText":"Documentation"},{"level":2,"text":"1.7.2 (2020-12-16)","anchor":"172-2020-12-16","htmlText":"1.7.2 (2020-12-16)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-20","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-9","htmlText":"Documentation"},{"level":2,"text":"1.7.1 (2020-11-11)","anchor":"171-2020-11-11","htmlText":"1.7.1 (2020-11-11)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-21","htmlText":"Bug Fixes"},{"level":2,"text":"1.7.0 (2020-10-22)","anchor":"170-2020-10-22","htmlText":"1.7.0 (2020-10-22)"},{"level":3,"text":"Features","anchor":"features-9","htmlText":"Features"},{"level":2,"text":"1.6.1 (2020-10-08)","anchor":"161-2020-10-08","htmlText":"1.6.1 (2020-10-08)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-22","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-10","htmlText":"Documentation"},{"level":2,"text":"1.6.0 (2020-09-14)","anchor":"160-2020-09-14","htmlText":"1.6.0 (2020-09-14)"},{"level":3,"text":"Features","anchor":"features-10","htmlText":"Features"},{"level":2,"text":"1.5.2 (2020-09-03)","anchor":"152-2020-09-03","htmlText":"1.5.2 (2020-09-03)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-23","htmlText":"Bug Fixes"},{"level":3,"text":"Documentation","anchor":"documentation-11","htmlText":"Documentation"},{"level":2,"text":"1.5.1 (2020-08-28)","anchor":"151-2020-08-28","htmlText":"1.5.1 (2020-08-28)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-24","htmlText":"Bug Fixes"},{"level":2,"text":"1.5.0 (2020-08-12)","anchor":"150-2020-08-12","htmlText":"1.5.0 (2020-08-12)"},{"level":3,"text":"Features","anchor":"features-11","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-25","htmlText":"Bug Fixes"},{"level":2,"text":"1.4.2 (2020-07-30)","anchor":"142-2020-07-30","htmlText":"1.4.2 (2020-07-30)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-26","htmlText":"Bug Fixes"},{"level":2,"text":"1.4.1 (2020-07-10)","anchor":"141-2020-07-10","htmlText":"1.4.1 (2020-07-10)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-27","htmlText":"Bug Fixes"},{"level":2,"text":"1.4.0 (2020-07-01)","anchor":"140-2020-07-01","htmlText":"1.4.0 (2020-07-01)"},{"level":3,"text":"Features","anchor":"features-12","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-28","htmlText":"Bug Fixes"},{"level":2,"text":"1.3.0 (2020-06-01)","anchor":"130-2020-06-01","htmlText":"1.3.0 (2020-06-01)"},{"level":3,"text":"Features","anchor":"features-13","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-29","htmlText":"Bug Fixes"},{"level":2,"text":"1.2.1 (2020-05-15)","anchor":"121-2020-05-15","htmlText":"1.2.1 (2020-05-15)"},{"level":3,"text":"Features","anchor":"features-14","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-30","htmlText":"Bug Fixes"},{"level":2,"text":"1.2.0 (2020-04-20)","anchor":"120-2020-04-20","htmlText":"1.2.0 (2020-04-20)"},{"level":3,"text":"Features","anchor":"features-15","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-31","htmlText":"Bug Fixes"},{"level":2,"text":"1.1.2 (2020-03-16)","anchor":"112-2020-03-16","htmlText":"1.1.2 (2020-03-16)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-32","htmlText":"Bug Fixes"},{"level":2,"text":"1.1.1 (2020-03-05)","anchor":"111-2020-03-05","htmlText":"1.1.1 (2020-03-05)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-33","htmlText":"Bug Fixes"},{"level":2,"text":"1.1.0 (2020-03-02)","anchor":"110-2020-03-02","htmlText":"1.1.0 (2020-03-02)"},{"level":3,"text":"Features","anchor":"features-16","htmlText":"Features"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-34","htmlText":"Bug Fixes"},{"level":2,"text":"1.0.1 (2020-02-11)","anchor":"101-2020-02-11","htmlText":"1.0.1 (2020-02-11)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-35","htmlText":"Bug Fixes"},{"level":2,"text":"1.0.0 (2020-01-30)","anchor":"100-2020-01-30","htmlText":"1.0.0 (2020-01-30)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-36","htmlText":"Bug Fixes"},{"level":2,"text":"0.2.2 (2020-01-15)","anchor":"022-2020-01-15","htmlText":"0.2.2 (2020-01-15)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-37","htmlText":"Bug Fixes"},{"level":2,"text":"0.2.1 (2019-12-10)","anchor":"021-2019-12-10","htmlText":"0.2.1 (2019-12-10)"},{"level":3,"text":"Bug Fixes","anchor":"bug-fixes-38","htmlText":"Bug Fixes"},{"level":2,"text":"0.2.0","anchor":"020","htmlText":"0.2.0"},{"level":3,"text":"Implementation Changes","anchor":"implementation-changes","htmlText":"Implementation Changes"},{"level":3,"text":"New Features","anchor":"new-features","htmlText":"New Features"},{"level":3,"text":"Documentation","anchor":"documentation-12","htmlText":"Documentation"},{"level":3,"text":"Internal / Testing Changes","anchor":"internal--testing-changes","htmlText":"Internal / Testing Changes"},{"level":2,"text":"0.1.0","anchor":"010","htmlText":"0.1.0"},{"level":3,"text":"Deprecations","anchor":"deprecations","htmlText":"Deprecations"},{"level":3,"text":"Implementation Changes","anchor":"implementation-changes-1","htmlText":"Implementation Changes"},{"level":3,"text":"New Features","anchor":"new-features-1","htmlText":"New Features"},{"level":3,"text":"Documentation","anchor":"documentation-13","htmlText":"Documentation"},{"level":3,"text":"Internal / Testing Changes","anchor":"internal--testing-changes-1","htmlText":"Internal / Testing Changes"},{"level":2,"text":"0.0.1","anchor":"001","htmlText":"0.0.1"},{"level":3,"text":"Implementation Changes","anchor":"implementation-changes-2","htmlText":"Implementation Changes"},{"level":3,"text":"New Features","anchor":"new-features-2","htmlText":"New Features"},{"level":3,"text":"Documentation","anchor":"documentation-14","htmlText":"Documentation"},{"level":2,"text":"0.0.1dev1","anchor":"001dev1","htmlText":"0.0.1dev1"}]},"issueTemplate":null,"discussionTemplate":null,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eChangelog\u003c/h1\u003e\u003ca id=\"user-content-changelog\" class=\"anchor\" aria-label=\"Permalink: Changelog\" href=\"#changelog\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://pypi.org/project/google-cloud-ndb/#history\" rel=\"nofollow\"\u003ePyPI History\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-ndb-v2.3.4...google-cloud-ndb-v2.4.0\"\u003e2.4.0\u003c/a\u003e (2025-12-15)\u003c/h2\u003e\u003ca id=\"user-content-240-2025-12-15\" class=\"anchor\" aria-label=\"Permalink: 2.4.0 (2025-12-15)\" href=\"#240-2025-12-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd support for Python 3.14 (#1028) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/947ff9b73c516f18b0411b828d45eb4bd8b95d39\"\u003e947ff9b73c516f18b0411b828d45eb4bd8b95d39\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.3.3...v2.3.4\"\u003e2.3.4\u003c/a\u003e (2025-06-11)\u003c/h2\u003e\u003ca id=\"user-content-234-2025-06-11\" class=\"anchor\" aria-label=\"Permalink: 2.3.4 (2025-06-11)\" href=\"#234-2025-06-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAllow protobuf 6.x, allow redis 6.x (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/1013\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/1013/hovercard\"\u003e#1013\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/b3684fe46c13b5d39deccc456f544b0f6f473d91\"\u003eb3684fe\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.3.2...v2.3.3\"\u003e2.3.3\u003c/a\u003e (2025-05-09)\u003c/h2\u003e\u003ca id=\"user-content-233-2025-05-09\" class=\"anchor\" aria-label=\"Permalink: 2.3.3 (2025-05-09)\" href=\"#233-2025-05-09\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-1\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSupport sub-meanings for datastore v2.20.3 (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/1014\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/1014/hovercard\"\u003e#1014\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/88f14fa462b7f7caf72688374682bb1b7a2d933c\"\u003e88f14fa\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.3.1...v2.3.2\"\u003e2.3.2\u003c/a\u003e (2024-07-15)\u003c/h2\u003e\u003ca id=\"user-content-232-2024-07-15\" class=\"anchor\" aria-label=\"Permalink: 2.3.2 (2024-07-15)\" href=\"#232-2024-07-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-2\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-2\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAllow Protobuf 5.x (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/991\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/991/hovercard\"\u003e#991\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/5812a3c2833ef9edda1726645e32789752474bd6\"\u003e5812a3c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.3.0...v2.3.1\"\u003e2.3.1\u003c/a\u003e (2024-03-16)\u003c/h2\u003e\u003ca id=\"user-content-231-2024-03-16\" class=\"anchor\" aria-label=\"Permalink: 2.3.1 (2024-03-16)\" href=\"#231-2024-03-16\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-3\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-3\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003egrpc:\u003c/strong\u003e Fix large payload handling when using the emulator. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/975\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/975/hovercard\"\u003e#975\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/d9162aee709062683bf5f9f01208bd40f46d490a\"\u003ed9162ae\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove uses of six. \u003ca href=\"https://github.com/googleapis/python-ndb/issues/913\"\u003e#913\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/958\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/958/hovercard\"\u003e#958\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/e17129a2114c3f5d45b99cc9a4911b586eb3fafa\"\u003ee17129a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow a non-None error for core_exception.Unknown errors. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/968\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/968/hovercard\"\u003e#968\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/66e61cc578335509d480650906528fa390f44c11\"\u003e66e61cc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDocument how to run system tests against the emulator. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/963\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/963/hovercard\"\u003e#963\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/47db5b9f6ee1fc7c01ad86d476cd8e066fb5cffb\"\u003e47db5b9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNote to use functools.wrap instead of utils.wrapping. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/966\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/966/hovercard\"\u003e#966\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/5e9f3d6977677c20b3447f07bf8bcf4553aac076\"\u003e5e9f3d6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTell users of utils.wrapping to use functools.wraps (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/967\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/967/hovercard\"\u003e#967\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/042645b52608a1c11645dd4b014a90040468b113\"\u003e042645b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.2.2...v2.3.0\"\u003e2.3.0\u003c/a\u003e (2024-03-01)\u003c/h2\u003e\u003ca id=\"user-content-230-2024-03-01\" class=\"anchor\" aria-label=\"Permalink: 2.3.0 (2024-03-01)\" href=\"#230-2024-03-01\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-1\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd field information when raising validation errors. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/956\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/956/hovercard\"\u003e#956\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/17caf0b5f7d0c4d18522f676c8af990b8ff8462d\"\u003e17caf0b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.12 (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/949\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/949/hovercard\"\u003e#949\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/b5c847783b80071c2dd9e9a3dbf899230c99e64a\"\u003eb5c8477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for google.cloud.ndb.\u003cstrong\u003eversion\u003c/strong\u003e (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/929\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/929/hovercard\"\u003e#929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/42b3f0137caed25ac3242435b571155d2d84c78e\"\u003e42b3f01\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for server side NOT_IN filter. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/957\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/957/hovercard\"\u003e#957\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/f0b0724d7e364cc3f3574e77076465657089b09c\"\u003ef0b0724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow queries using server side IN. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/954\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/954/hovercard\"\u003e#954\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/2646cef3e2687461174a11c45f29de7b84d1fcdb\"\u003e2646cef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce compatibility with native namespace packages (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/933\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/933/hovercard\"\u003e#933\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/ccae387720a28db2686e69dfe23a2599fc4908f0\"\u003eccae387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse server side != for queries. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/950\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/950/hovercard\"\u003e#950\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/106772f031f6c37500a0d463698e59008f9bf19a\"\u003e106772f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-4\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-4\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eCompressed repeated to uncompressed property (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/772\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/772/hovercard\"\u003e#772\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/dab9edf0fc161051eb13c296cbe973b3a16b502d\"\u003edab9edf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeated structured property containing blob property with legacy_data (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/817\"\u003e#817\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/946\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/946/hovercard\"\u003e#946\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/455f860343ff1b71232dad98cf91415492a899ca\"\u003e455f860\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-1\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003einit:\u003c/strong\u003e Note that Firestore in Datastore Mode is supported (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/919\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/919/hovercard\"\u003e#919\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/0fa75e71dfc6d56d2c0eaf214a48774b99bb959f\"\u003e0fa75e7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrect read_consistency docs. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/948\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/948/hovercard\"\u003e#948\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/7e8481db84a6d0b96cf09c38e90f47d6b7847a0b\"\u003e7e8481d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix a mistaken ID description (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/943\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/943/hovercard\"\u003e#943\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/51038139e45807b3a14346ded702fbe202dcfdf2\"\u003e5103813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow how to use named databases (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/932\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/932/hovercard\"\u003e#932\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/182fe4e2d295768aaf016f94cb43b6b1e5572ebd\"\u003e182fe4e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.2.1...v2.2.2\"\u003e2.2.2\u003c/a\u003e (2023-09-19)\u003c/h2\u003e\u003ca id=\"user-content-222-2023-09-19\" class=\"anchor\" aria-label=\"Permalink: 2.2.2 (2023-09-19)\" href=\"#222-2023-09-19\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-2\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-2\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003equery:\u003c/strong\u003e Document deprecation of Query.default_options (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/915\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/915/hovercard\"\u003e#915\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/a656719d8a4f20a8b8dc564a1e3837a2cfb037c4\"\u003ea656719\u003c/a\u003e), closes \u003ca href=\"https://github.com/googleapis/python-ndb/issues/880\" data-hovercard-type=\"issue\" data-hovercard-url=\"/googleapis/python-ndb/issues/880/hovercard\"\u003e#880\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.2.0...v2.2.1\"\u003e2.2.1\u003c/a\u003e (2023-09-15)\u003c/h2\u003e\u003ca id=\"user-content-221-2023-09-15\" class=\"anchor\" aria-label=\"Permalink: 2.2.1 (2023-09-15)\" href=\"#221-2023-09-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-5\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-5\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e Add missing six dependency (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/912\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/912/hovercard\"\u003e#912\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/3b1ffb7e5cabdadfe2a4be6802adef774eec5ef8\"\u003e3b1ffb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-3\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-3\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eMark database argument for get_by_id and its async counterpart as ignored (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/905\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/905/hovercard\"\u003e#905\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/b0f431048b7b2ebb20e4255340290c7687e27425\"\u003eb0f4310\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.1.1...v2.2.0\"\u003e2.2.0\u003c/a\u003e (2023-07-26)\u003c/h2\u003e\u003ca id=\"user-content-220-2023-07-26\" class=\"anchor\" aria-label=\"Permalink: 2.2.0 (2023-07-26)\" href=\"#220-2023-07-26\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-2\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-2\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eNamed db support (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/882\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/882/hovercard\"\u003e#882\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/f5713b0e36e54ef69e9fa7e99975f32870832f65\"\u003ef5713b0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-4\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-4\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003equery:\u003c/strong\u003e Fix Py2-style print statements (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/878\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/878/hovercard\"\u003e#878\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/a3a181a427cc292882691d963b30bc78c05c6592\"\u003ea3a181a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.1.0...v2.1.1\"\u003e2.1.1\u003c/a\u003e (2023-02-28)\u003c/h2\u003e\u003ca id=\"user-content-211-2023-02-28\" class=\"anchor\" aria-label=\"Permalink: 2.1.1 (2023-02-28)\" href=\"#211-2023-02-28\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-6\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-6\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eQuery options were not respecting use_cache (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/873\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/873/hovercard\"\u003e#873\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/802d88d108969cba02437f55e5858556221930f3\"\u003e802d88d\u003c/a\u003e), closes \u003ca href=\"https://github.com/googleapis/python-ndb/issues/752\" data-hovercard-type=\"issue\" data-hovercard-url=\"/googleapis/python-ndb/issues/752/hovercard\"\u003e#752\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-5\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-5\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eNote that we support Python 3.11 in CONTRIBUTING file (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/872\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/872/hovercard\"\u003e#872\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/982ee5f9e768c6f7f5ef19bf6fe9e646e4e08e1f\"\u003e982ee5f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse cached versions of Cloud objects.inv files (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/863\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/863/hovercard\"\u003e#863\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/4471e2f11757be280266779544c59c90222b8184\"\u003e4471e2f\u003c/a\u003e), closes \u003ca href=\"https://github.com/googleapis/python-ndb/issues/862\" data-hovercard-type=\"issue\" data-hovercard-url=\"/googleapis/python-ndb/issues/862/hovercard\"\u003e#862\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v2.0.0...v2.1.0\"\u003e2.1.0\u003c/a\u003e (2022-12-15)\u003c/h2\u003e\u003ca id=\"user-content-210-2022-12-15\" class=\"anchor\" aria-label=\"Permalink: 2.1.0 (2022-12-15)\" href=\"#210-2022-12-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-3\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-3\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSupport client_options for clients (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/815\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/815/hovercard\"\u003e#815\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/6f94f40dfcd6f10e3cec979e4eb2b83408c66a30\"\u003e6f94f40\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-7\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-7\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003ezlib:\u003c/strong\u003e Accomodate different Zlib compression levels (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/852\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/852/hovercard\"\u003e#852\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/c1ab83b9581b3d4d10dc7d2508b1c93b14e3c31a\"\u003ec1ab83b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v1.12.0...v2.0.0\"\u003e2.0.0\u003c/a\u003e (2022-12-06)\u003c/h2\u003e\u003ca id=\"user-content-200-2022-12-06\" class=\"anchor\" aria-label=\"Permalink: 2.0.0 (2022-12-06)\" href=\"#200-2022-12-06\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\u003ca id=\"user-content--breaking-changes\" class=\"anchor\" aria-label=\"Permalink: ⚠ BREAKING CHANGES\" href=\"#-breaking-changes\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003edependencies:\u003c/strong\u003e Upgrade to google-cloud-datastore \u0026gt;= 2.7.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-4\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-4\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003edependencies:\u003c/strong\u003e Upgrade to google-cloud-datastore \u0026gt;= 2.7.2 (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-8\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-8\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eCorrect access to SerializeToString, CopyFrom, and MergeFromString (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix enum namespaces (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate API capitalization/casing (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate datastore stub creation (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate module imports (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a\"\u003e12bbcb5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v1.11.2...v1.12.0\"\u003e1.12.0\u003c/a\u003e (2022-11-29)\u003c/h2\u003e\u003ca id=\"user-content-1120-2022-11-29\" class=\"anchor\" aria-label=\"Permalink: 1.12.0 (2022-11-29)\" href=\"#1120-2022-11-29\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-9\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-9\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDrop Python 2 support (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/90efd77633c97f530088dc3f079547ef4eefd796\"\u003e90efd77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.6 support (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/829\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/829/hovercard\"\u003e#829\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/b1101994a34f70804027ea0c8a1b9f276d260756\"\u003eb110199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emodel:\u003c/strong\u003e Ensure repeated props have same kind when converting from ds (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/824\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/824/hovercard\"\u003e#824\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/29f5a853174857545e225fe2f0c682dfa0bc3884\"\u003e29f5a85\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-6\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-6\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd note in Django middleware documentation that it is unimplemented (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/805\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/805/hovercard\"\u003e#805\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/aa7621dba3b5c32141cdcb1d07829a217bb8b0bd\"\u003eaa7621d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd note that ProtoRPC message classes are unimplemented (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/819\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/819/hovercard\"\u003e#819\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/ae813e9995d103a45a0c7bc6b4c7bdc148c19c29\"\u003eae813e9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtext:\u003c/strong\u003e Note that several methods are no longer implemented. (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/821\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/821/hovercard\"\u003e#821\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/34c2c389d02f4692840631d34b6249b88867d725\"\u003e34c2c38\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCONTRIBUTING:\u003c/strong\u003e Note the need for Redis/Memcached env vars in tests (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/838\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/838/hovercard\"\u003e#838\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/19f84150ab06ae71e25ee48ba7f7285eb0402738\"\u003e19f8415\u003c/a\u003e), closes \u003ca href=\"https://github.com/googleapis/python-ndb/issues/836\" data-hovercard-type=\"issue\" data-hovercard-url=\"/googleapis/python-ndb/issues/836/hovercard\"\u003e#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bad import path in migration guide (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/827\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/827/hovercard\"\u003e#827\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/7b449615629b5a08836ee17a8ab34eb8efbaed21\"\u003e7b44961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in begin_transaction docstring (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/822\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/822/hovercard\"\u003e#822\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/7fd3ed315d39a9a50746b00898b22edd3f7d1d0c\"\u003e7fd3ed3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eREADME:\u003c/strong\u003e Syncronize supported version text with python-datastore (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/837\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/837/hovercard\"\u003e#837\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/316f95913f2dca12f314e429bbe8bd2582bc1c0f\"\u003e316f959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etasklets:\u003c/strong\u003e Fix Py2-style print statement (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/840\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/840/hovercard\"\u003e#840\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/0ebfaedc48911b57d0cb23584a2a84c31a92d06a\"\u003e0ebfaed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://github.com/googleapis/python-ndb/compare/v1.11.1...v1.11.2\"\u003e1.11.2\u003c/a\u003e (2022-06-03)\u003c/h2\u003e\u003ca id=\"user-content-1112-2022-06-03\" class=\"anchor\" aria-label=\"Permalink: 1.11.2 (2022-06-03)\" href=\"#1112-2022-06-03\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-7\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-7\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix changelog header to consistent size (\u003ca href=\"https://github.com/googleapis/python-ndb/issues/773\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/773/hovercard\"\u003e#773\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/commit/7bb4e5a7bf11061a546f21e6f57cf2937f7a3a9d\"\u003e7bb4e5a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.11.0...v1.11.1\"\u003e1.11.1\u003c/a\u003e (2021-11-03)\u003c/h2\u003e\u003ca id=\"user-content-1111-2021-11-03\" class=\"anchor\" aria-label=\"Permalink: 1.11.1 (2021-11-03)\" href=\"#1111-2021-11-03\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-10\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-10\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eincrease cache lock expiration time (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/740\"\u003e#740\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2634d01ac9d4a73057d5e16cf476c5ecfc8e7fcf\"\u003e2634d01\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/728\"\u003e#728\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.5...v1.11.0\"\u003e1.11.0\u003c/a\u003e (2021-10-28)\u003c/h2\u003e\u003ca id=\"user-content-1110-2021-10-28\" class=\"anchor\" aria-label=\"Permalink: 1.11.0 (2021-10-28)\" href=\"#1110-2021-10-28\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-5\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-5\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd support for python 3.10 (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/735\"\u003e#735\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/58620c1b17e3a4b3608614bea620e93f39e1bd3a\"\u003e58620c1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.4...v1.10.5\"\u003e1.10.5\u003c/a\u003e (2021-10-08)\u003c/h2\u003e\u003ca id=\"user-content-1105-2021-10-08\" class=\"anchor\" aria-label=\"Permalink: 1.10.5 (2021-10-08)\" href=\"#1105-2021-10-08\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-11\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ecorrect regression in \u003ccode\u003eModel.get_or_insert\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/731\"\u003e#731\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/921ec695e246e548f207b0c6aded7296e4b3b263\"\u003e921ec69\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/729\"\u003e#729\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.3...v1.10.4\"\u003e1.10.4\u003c/a\u003e (2021-09-28)\u003c/h2\u003e\u003ca id=\"user-content-1104-2021-09-28\" class=\"anchor\" aria-label=\"Permalink: 1.10.4 (2021-09-28)\" href=\"#1104-2021-09-28\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-12\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-12\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003epin grpcio / googleapis-common-protos under Python2 (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/725\"\u003e#725\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/ccc82e42fe2bbb285779a81cff03866facfad667\"\u003eccc82e4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.2...v1.10.3\"\u003e1.10.3\u003c/a\u003e (2021-09-07)\u003c/h2\u003e\u003ca id=\"user-content-1103-2021-09-07\" class=\"anchor\" aria-label=\"Permalink: 1.10.3 (2021-09-07)\" href=\"#1103-2021-09-07\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-13\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-13\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003euse thread-safe iterator to generate context ids (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/716\"\u003e#716\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/92ec8ac7de8cd0f50d6104b9e514b4e933cfbb13\"\u003e92ec8ac\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/715\"\u003e#715\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.1...v1.10.2\"\u003e1.10.2\u003c/a\u003e (2021-08-31)\u003c/h2\u003e\u003ca id=\"user-content-1102-2021-08-31\" class=\"anchor\" aria-label=\"Permalink: 1.10.2 (2021-08-31)\" href=\"#1102-2021-08-31\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-14\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-14\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e add pytz as an explicit dependency (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/707\"\u003e#707\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/6b48548a1ea4b0c125314f907c25b47992ee6556\"\u003e6b48548\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.10.0...v1.10.1\"\u003e1.10.1\u003c/a\u003e (2021-08-11)\u003c/h2\u003e\u003ca id=\"user-content-1101-2021-08-11\" class=\"anchor\" aria-label=\"Permalink: 1.10.1 (2021-08-11)\" href=\"#1101-2021-08-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-15\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd rpc request object to debug logging (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/696\"\u003e#696\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/45e590a0903e6690a516a1eb35002664eebf540d\"\u003e45e590a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/695\"\u003e#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eallow for legacy repeated structured properties with empty values (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/702\"\u003e#702\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/60c293d039721f7e842ac8973a743642e182e4a5\"\u003e60c293d\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/694\"\u003e#694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix bug with concurrent writes to global cache (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/705\"\u003e#705\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/bb7cadc45df92757b0b2d49c8914a10869d64965\"\u003ebb7cadc\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/692\"\u003e#692\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.9.0...v1.10.0\"\u003e1.10.0\u003c/a\u003e (2021-07-20)\u003c/h2\u003e\u003ca id=\"user-content-1100-2021-07-20\" class=\"anchor\" aria-label=\"Permalink: 1.10.0 (2021-07-20)\" href=\"#1100-2021-07-20\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-6\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-6\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd 'python_requires' metadata to setup (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/681\"\u003e#681\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e9a09d3f0facd29836ccce078575f12e102462c9\"\u003ee9a09d3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-16\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-16\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix bug with repeated structured properties with Expando values (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/671\"\u003e#671\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/882dff0517be9ddad5814317853ce87bf99d5db0\"\u003e882dff0\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/669\"\u003e#669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eproperly handle legacy structured properties in Expando instances (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/676\"\u003e#676\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/70710c83c5ace83504167801da990bc81cb43c89\"\u003e70710c8\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/673\"\u003e#673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor global cache to address concurrency and fault tolerance issues (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/667\"\u003e#667\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5e2c591cbd89d8783527252d7f771fba91792602\"\u003e5e2c591\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.8.0...v1.9.0\"\u003e1.9.0\u003c/a\u003e (2021-06-07)\u003c/h2\u003e\u003ca id=\"user-content-190-2021-06-07\" class=\"anchor\" aria-label=\"Permalink: 1.9.0 (2021-06-07)\" href=\"#190-2021-06-07\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-7\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-7\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003edon't flush entire global cache on transient errors (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/654\"\u003e#654\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/cbf2d7de3d532ce08bd0d25fa18b5226afd216b9\"\u003ecbf2d7d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-17\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-17\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ecorrect inconsistent behavior with regards to namespaces (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/662\"\u003e#662\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/cf21a285e784019f9ba0f2a89a7acc4105fdcd2a\"\u003ecf21a28\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/661\"\u003e#661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecorrectly decode falsy values in legacy protocol buffers (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/628\"\u003e#628\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/69a9f63be89ca50bbf0a42d0565a9f1fdcf6d143\"\u003e69a9f63\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/625\"\u003e#625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edefer clearing global cache when in transaction (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/660\"\u003e#660\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/73020ed8f8eb1430f87be4b5680690d9e373c846\"\u003e73020ed\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect cache write failure for \u003ccode\u003eMemcacheCache\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/665\"\u003e#665\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5d7f163988c6e8c43579aae616d275db4ca4ff45\"\u003e5d7f163\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/656\"\u003e#656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edo not set read_consistency for queries. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/664\"\u003e#664\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/36a5b55b1b21d7333923edd4a42d1a32fd453dfa\"\u003e36a5b55\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/666\"\u003e#666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003elimit memcache keys to 250 bytes (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/663\"\u003e#663\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/7dc11df00fc15392fde61e828e1445eb9e66a1ac\"\u003e7dc11df\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/619\"\u003e#619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eproperly handle error when clearing cache (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/636\"\u003e#636\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/d0ffcf3517fe357d6689943265b829258c397d93\"\u003ed0ffcf3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/633\"\u003e#633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eretry connection errors with memcache (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/645\"\u003e#645\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/06b466a8421ff7a5586164bf4deb43d6bcbf0ef4\"\u003e06b466a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/620\"\u003e#620\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport ordering by key for multi queries (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/630\"\u003e#630\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/508d8cb8c65afe5e885c1fdba4dce933d52cfd4b\"\u003e508d8cb\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/629\"\u003e#629\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.7.3...v1.8.0\"\u003e1.8.0\u003c/a\u003e (2021-04-06)\u003c/h2\u003e\u003ca id=\"user-content-180-2021-04-06\" class=\"anchor\" aria-label=\"Permalink: 1.8.0 (2021-04-06)\" href=\"#180-2021-04-06\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-8\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-8\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eretry global cache operations on transient errors (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/603\"\u003e#603\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5d6b6503ce40ba0d36ea79a461c2c95897235734\"\u003e5d6b650\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/601\"\u003e#601\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-18\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-18\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003edon't return \u003ccode\u003eNone\u003c/code\u003e for entities found in queries (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/612\"\u003e#612\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9e5e255c14716b3046a9dc70bb8a4596beec1562\"\u003e9e5e255\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix bug with compressed blob property (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/615\"\u003e#615\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/d305f9fd2b1cfe8e7d709849e392402f4ae059ac\"\u003ed305f9f\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/602\"\u003e#602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix failing unit test (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/607\"\u003e#607\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5d3927e0b0a6d6a447585d2cc90077de26f24c5c\"\u003e5d3927e\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehandle unpickling between GAE NDB (2.7) to Cloud NDB (3) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/596\"\u003e#596\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5be4225f20b9216b49f953c464b8b8ef9683d8bf\"\u003e5be4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emock call to \u003ccode\u003etasklets.sleep\u003c/code\u003e in unit test (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/609\"\u003e#609\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/00e23f3f31fb531b402f087e29b539a7af9ac79f\"\u003e00e23f3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/608\"\u003e#608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprevent mismatch error when using default namespace on ancestor queries (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/614\"\u003e#614\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/ae67f04db12c65ecca9d6145f113729072b952f3\"\u003eae67f04\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereimplement \u003ccode\u003e_clone_properties\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/610\"\u003e#610\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e23f42b27cec6f7fcf05ae51d4e6ee2aea30f6ca\"\u003ee23f42b\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereplicate legacy behavior for using cache with queries (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/613\"\u003e#613\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/edd1185f01c6db5b4876f7b0ce81df0315c98890\"\u003eedd1185\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport \u003ccode\u003eint\u003c/code\u003e as base type for \u003ccode\u003eBooleanProperty\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/624\"\u003e#624\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/a04bf3acef3eb88f23c4f0832ce74af9557cb03d\"\u003ea04bf3a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.7.2...v1.7.3\"\u003e1.7.3\u003c/a\u003e (2021-01-21)\u003c/h2\u003e\u003ca id=\"user-content-173-2021-01-21\" class=\"anchor\" aria-label=\"Permalink: 1.7.3 (2021-01-21)\" href=\"#173-2021-01-21\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-19\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-19\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ehandle negatives in protobuf deserialization (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/591\"\u003e#591\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/0d3d3ca99df10a3d6e1c6f31ee719faa373ccacf\"\u003e0d3d3ca\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake nested retry blocks work for RPC calls (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/589\"\u003e#589\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f125459d4eef05861776ccefd29d137a5f22e240\"\u003ef125459\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-8\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-8\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ecorrect documentation for \u003ccode\u003eGlobalCache\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/565\"\u003e#565\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/be5b1571e8e30bd1d736ae5d77b3017473b1a373\"\u003ebe5b157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix return type in fetch docstring (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/594\"\u003e#594\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9eb15f4ff75204ad25f943dbc1e85c227d88faf6\"\u003e9eb15f4\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/576\"\u003e#576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in example code (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/588\"\u003e#588\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/76fab49f9d08a2add4135c011d08ff24f04549b2\"\u003e76fab49\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.7.1...v1.7.2\"\u003e1.7.2\u003c/a\u003e (2020-12-16)\u003c/h2\u003e\u003ca id=\"user-content-172-2020-12-16\" class=\"anchor\" aria-label=\"Permalink: 1.7.2 (2020-12-16)\" href=\"#172-2020-12-16\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-20\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-20\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ealways use brute-force counting with Datastore emulator and clean up related hacks (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/585\"\u003e#585\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/8480a8bd0d169e2499ee62d1fb9d140aa6ce00d4\"\u003e8480a8b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereturn a tuple when empty result returned on query (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/582\"\u003e#582\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/7cf0e878054dbfe7bc8b6c0c9fea96a602e8e859\"\u003e7cf0e87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport empty not_finished messages that cause query.count() to return early (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/580\"\u003e#580\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/fc31553c77f6e7865df0efd4c820f69366f6607c\"\u003efc31553\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/575\"\u003e#575\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-9\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-9\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd urlsafe() info to migration notes (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/579\"\u003e#579\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9df2f9f8be40d95fbde297335eb99b19bafad583\"\u003e9df2f9f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.7.0...v1.7.1\"\u003e1.7.1\u003c/a\u003e (2020-11-11)\u003c/h2\u003e\u003ca id=\"user-content-171-2020-11-11\" class=\"anchor\" aria-label=\"Permalink: 1.7.1 (2020-11-11)\" href=\"#171-2020-11-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-21\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-21\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cstrong\u003edependencies:\u003c/strong\u003e Pin to less than 2.0.0 for google-cloud-datastore (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/569\"\u003e#569\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/c8860a6541f638fb458b74cfdffc1ddb7b035549\"\u003ec8860a6\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/568\"\u003e#568\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.6.1...v1.7.0\"\u003e1.7.0\u003c/a\u003e (2020-10-22)\u003c/h2\u003e\u003ca id=\"user-content-170-2020-10-22\" class=\"anchor\" aria-label=\"Permalink: 1.7.0 (2020-10-22)\" href=\"#170-2020-10-22\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-9\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-9\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efault tolerance for global caches (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/560\"\u003e#560\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/8ab8ee01f5577cfe468ed77d3cd48d6f6b816b0e\"\u003e8ab8ee0\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/557\"\u003e#557\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTransaction propagation using ndb.TransactionOptions (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f3aa027d7d55d9aee9a72ce23cebc26a5975bb28\"\u003ef3aa027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.6.0...v1.6.1\"\u003e1.6.1\u003c/a\u003e (2020-10-08)\u003c/h2\u003e\u003ca id=\"user-content-161-2020-10-08\" class=\"anchor\" aria-label=\"Permalink: 1.6.1 (2020-10-08)\" href=\"#161-2020-10-08\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-22\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-22\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ccode\u003e[@non](https://www.github.com/non)_transactional\u003c/code\u003e decorator was not working correctly with async (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/554\"\u003e#554\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/758c8e66314da4cb1f077e9fbe8cf1ae09bccd4e\"\u003e758c8e6\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/552\"\u003e#552\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix a connection leak in RedisCache (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/556\"\u003e#556\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/47ae172edc435a49d25687d83747afff153b59d2\"\u003e47ae172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eget_by_id and get_or_insert should use default namespace when passed in (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/3674650a7ba1a1dd7a72b728f343f623f660ba6a\"\u003e3674650\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/535\"\u003e#535\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-10\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-10\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eaddress docs builds and memcached customization to docker file (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/88e7e244854acb2409c324855deb9229f33a44fd\"\u003e88e7e24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate docker image used for docs generation \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/549\"\u003e#549\u003c/a\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5e8bf57508e3b995f51dcc3171e5ea77c4bc4484\"\u003e5e8bf57\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.5.2...v1.6.0\"\u003e1.6.0\u003c/a\u003e (2020-09-14)\u003c/h2\u003e\u003ca id=\"user-content-160-2020-09-14\" class=\"anchor\" aria-label=\"Permalink: 1.6.0 (2020-09-14)\" href=\"#160-2020-09-14\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-10\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-10\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ememcached integration (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2bd43dabbd6b6fbffbb4390520e47ae06262c858\"\u003e2bd43da\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.5.1...v1.5.2\"\u003e1.5.2\u003c/a\u003e (2020-09-03)\u003c/h2\u003e\u003ca id=\"user-content-152-2020-09-03\" class=\"anchor\" aria-label=\"Permalink: 1.5.2 (2020-09-03)\" href=\"#152-2020-09-03\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-23\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-23\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eavoid kind error when using subclasses in local structured properties (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/49f9e48a7d8bf9c3c8cc8a30ae385bcbcb95dbaa\"\u003e49f9e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix bug when setting naive datetime on \u003ccode\u003eDateTimeProperty\u003c/code\u003e with timezone (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/ad426063257f8633bb4207a77b29b35fc0173ec1\"\u003ead42606\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/517\"\u003e#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake optimized \u003ccode\u003eQuery.count()\u003c/code\u003e work with the datastore emulator (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e5df1e37c97fc0765f8f95ada6d4dadd7b4bb445\"\u003ee5df1e3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/525\"\u003e#525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake sure \u003ccode\u003ekeys_only\u003c/code\u003e ordered multiquery returns keys not entities (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/527\"\u003e#527\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2078dc1c2239299729d8ecade2e3592f49bc65db\"\u003e2078dc1\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/526\"\u003e#526\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-11\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix type hint for urlsafe (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/532\"\u003e#532\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/87a347536b459c461a02c401b8a8c097e276d3ea\"\u003e87a3475\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.5.0...v1.5.1\"\u003e1.5.1\u003c/a\u003e (2020-08-28)\u003c/h2\u003e\u003ca id=\"user-content-151-2020-08-28\" class=\"anchor\" aria-label=\"Permalink: 1.5.1 (2020-08-28)\" href=\"#151-2020-08-28\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-24\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-24\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix exception handling bug in tasklets (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/520\"\u003e#520\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/fc0366a9db9fa5263533631cb08ccb5be07960ad\"\u003efc0366a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/519\"\u003e#519\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix format exceptions in \u003ccode\u003eutils.logging_debug\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/d38c0a36dac1dc183d344a08050815010b256638\"\u003ed38c0a3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/508\"\u003e#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etransparently add sort properties to projection for multiqueries (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/511\"\u003e#511\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/4e463273a36b5fe69f87d429260fba1a690d55b9\"\u003e4e46327\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/509\"\u003e#509\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.4.2...v1.5.0\"\u003e1.5.0\u003c/a\u003e (2020-08-12)\u003c/h2\u003e\u003ca id=\"user-content-150-2020-08-12\" class=\"anchor\" aria-label=\"Permalink: 1.5.0 (2020-08-12)\" href=\"#150-2020-08-12\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-11\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003euse contextvars.ConvextVar instead of threading.local in Python 3 (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/4c634f348f8847fda139fe469e0e8adfabfd649a\"\u003e4c634f3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/504\"\u003e#504\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-25\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-25\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix concurrency bug in redis cache implementation (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/503\"\u003e#503\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/6c18b9522e83e5e599a491c6ed287de2d7cdf089\"\u003e6c18b95\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/496\"\u003e#496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport polymodel in local structured property (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9ccbdd23448dcb401b111f03e951fa89ae65174f\"\u003e9ccbdd2\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/481\"\u003e#481\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.4.1...v1.4.2\"\u003e1.4.2\u003c/a\u003e (2020-07-30)\u003c/h2\u003e\u003ca id=\"user-content-142-2020-07-30\" class=\"anchor\" aria-label=\"Permalink: 1.4.2 (2020-07-30)\" href=\"#142-2020-07-30\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-26\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-26\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003einclude ancestors in \u003ccode\u003eKey.to_legacy_urlsafe\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/494\"\u003e#494\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/0f2919070ef78a17988fb5cae573a1514ff63926\"\u003e0f29190\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/478\"\u003e#478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eproperly handle explicitly passing default namespace (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/3c644838a499f54620c6a12773f8cdd1c245096f\"\u003e3c64483\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/476\"\u003e#476\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.4.0...v1.4.1\"\u003e1.4.1\u003c/a\u003e (2020-07-10)\u003c/h2\u003e\u003ca id=\"user-content-141-2020-07-10\" class=\"anchor\" aria-label=\"Permalink: 1.4.1 (2020-07-10)\" href=\"#141-2020-07-10\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-27\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-27\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003edo not disclose cache contents in stack traces (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/485\"\u003e#485\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2d2c5a2004629b807f296f74648c789c6ce9a6ba\"\u003e2d2c5a2\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/482\"\u003e#482\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.3.0...v1.4.0\"\u003e1.4.0\u003c/a\u003e (2020-07-01)\u003c/h2\u003e\u003ca id=\"user-content-140-2020-07-01\" class=\"anchor\" aria-label=\"Permalink: 1.4.0 (2020-07-01)\" href=\"#140-2020-07-01\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-12\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-12\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eallow \u003ccode\u003eQuery.fetch_page\u003c/code\u003e for queries with post filters (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/463\"\u003e#463\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/632435c155f565f5e7b45ab08680613599994f0e\"\u003e632435c\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/270\"\u003e#270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erecord time spent waiting on rpc calls (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/472\"\u003e#472\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/16298057c96921a3c995e9ddded36d37fc90819f\"\u003e1629805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-28\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-28\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eignore datastore properties that are not mapped to NDB properties (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/470\"\u003e#470\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/ab460fad8ded5b3b550359253e90a6b189145842\"\u003eab460fa\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/461\"\u003e#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake sure \u003ccode\u003etests\u003c/code\u003e package is not included in distribution (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/469\"\u003e#469\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5a20d0af6c6c1c2d10e9e42a35a5b58fa952547c\"\u003e5a20d0a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/468\"\u003e#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eretry grpc \u003ccode\u003eUNKNOWN\u003c/code\u003e errors (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/458\"\u003e#458\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5d354e4b4247372f2ffdc9caa2df1516ce97ff8d\"\u003e5d354e4\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/310\"\u003e#310\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.2.1...v1.3.0\"\u003e1.3.0\u003c/a\u003e (2020-06-01)\u003c/h2\u003e\u003ca id=\"user-content-130-2020-06-01\" class=\"anchor\" aria-label=\"Permalink: 1.3.0 (2020-06-01)\" href=\"#130-2020-06-01\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-13\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-13\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd templates for python samples projects (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/506\"\u003e#506\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/455\"\u003e#455\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e32927623645112513675fbbfe5884a63eac24e1\"\u003ee329276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003econvert grpc errors to api core exceptions (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/457\"\u003e#457\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/042cf6ceabe2a47b2fe77501ccd618e64877886a\"\u003e042cf6c\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/416\"\u003e#416\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-29\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-29\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAdd support for 'name' Key instances to to_legacy_urlsafe (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/420\"\u003e#420\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/59fc5afc36d01b72ad4b53befa593803b55df8b3\"\u003e59fc5af\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eall query types should use cache if available (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/454\"\u003e#454\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/69b3a0ae49ab446a9ed903646ae6e01690411d3e\"\u003e69b3a0a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/441\"\u003e#441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003eNotImplementedError\u003c/code\u003e for \u003ccode\u003eget_or_insert\u003c/code\u003e inside a transaction (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/451\"\u003e#451\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/99aa40358b469be1c8486c84ba5873929715f25e\"\u003e99aa403\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/433\"\u003e#433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake sure datastore key constructor never gets None in a pair (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/446\"\u003e#446\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e6173cf8feec866c365d35e7cb461f72d19544fa\"\u003ee6173cf\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/384\"\u003e#384\u003c/a\u003e \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/439\"\u003e#439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor transactions to use their own event loops (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/443\"\u003e#443\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/7590be8233fe58f9c45076eb38c1995363f02362\"\u003e7590be8\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/426\"\u003e#426\u003c/a\u003e \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/426\"\u003e#426\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erespect \u003ccode\u003e_code_name\u003c/code\u003e in \u003ccode\u003eStructuredProperty.__getattr__\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/453\"\u003e#453\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/4f54dfcee91b15d45cc6046f6b9933d1593d0956\"\u003e4f54dfc\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/449\"\u003e#449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003estrip \u003ccode\u003eorder_by\u003c/code\u003e option from query when using \u003ccode\u003ecount()\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/452\"\u003e#452\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9d20a2d5d75cc0590c4326019ea94159bb4aebe2\"\u003e9d20a2d\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/447\"\u003e#447\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.2.0...v1.2.1\"\u003e1.2.1\u003c/a\u003e (2020-05-15)\u003c/h2\u003e\u003ca id=\"user-content-121-2020-05-15\" class=\"anchor\" aria-label=\"Permalink: 1.2.1 (2020-05-15)\" href=\"#121-2020-05-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-14\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-14\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eImprove custom validators (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/408\"\u003e#408\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5b6cdd627dfce3e5b987c2ecd945d39b5056aa37\"\u003e5b6cdd6\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/252\"\u003e#252\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-30\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-30\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eclear context cache on rollback (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/410\"\u003e#410\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/aa17986759f32ea16c340961d70fbc8fc123b244\"\u003eaa17986\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/398\"\u003e#398\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edo not allow empty key parts for key constructor in namespaced model (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/401\"\u003e#401\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f3528b3e51c93c762c4e31eed76a1b2f06be84e1\"\u003ef3528b3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/384\"\u003e#384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edon't rely on duck typing for \u003ccode\u003e_retry.is_transient_error\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/425\"\u003e#425\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/4524542e5f6da1af047d86fee3d48cf65ea75508\"\u003e4524542\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/415\"\u003e#415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ehandle empty batches from Firestore (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/396\"\u003e#396\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/1a054cadff07074de9395cb99ae2c40f987aed2e\"\u003e1a054ca\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/386\"\u003e#386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake sure reads happen in transaction if there is a transaction (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/395\"\u003e#395\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f32644fcf8c16dc0fd74e14108d7955effff1771\"\u003ef32644f\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/394\"\u003e#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emore should be boolean in fetch_page call (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/423\"\u003e#423\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/a69ffd21aaaa881f5e8e54339fd62a1b02d19c4b\"\u003ea69ffd2\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/422\"\u003e#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport same options in model.query as query (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/407\"\u003e#407\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/d08019fbecb0f018987267b01929a21e97b418e2\"\u003ed08019f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euniform handling of \u003ccode\u003eprojection\u003c/code\u003e argument (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/428\"\u003e#428\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2b65c04e72a66062e2c792b5b1fb067fb935987f\"\u003e2b65c04\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/379\"\u003e#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse \u003ccode\u003eskipped_results\u003c/code\u003e from query results to adjust offset (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/399\"\u003e#399\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/6d1452d977f3f030ff65d5cbb3e593c0789e6c14\"\u003e6d1452d\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/392\"\u003e#392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse fresh context cache for each transaction (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/409\"\u003e#409\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5109b91425e917727973079020dc51c2b8fddf53\"\u003e5109b91\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/394\"\u003e#394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse true \u003ccode\u003ekeys_only\u003c/code\u003e query for \u003ccode\u003eQuery.count()\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/405\"\u003e#405\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/88184c312dd7bdc7bd36ec58fd53e3fd5001d7ac\"\u003e88184c3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/400\"\u003e#400\u003c/a\u003e \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/404\"\u003e#404\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.1.2...v1.2.0\"\u003e1.2.0\u003c/a\u003e (2020-04-20)\u003c/h2\u003e\u003ca id=\"user-content-120-2020-04-20\" class=\"anchor\" aria-label=\"Permalink: 1.2.0 (2020-04-20)\" href=\"#120-2020-04-20\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-15\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd \u003ccode\u003enamespace\u003c/code\u003e property to \u003ccode\u003econtext.Context\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/388\"\u003e#388\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/34bac153bcc191857715a8760671acaf4fd12706\"\u003e34bac15\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/385\"\u003e#385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enew \u003ccode\u003ejoin\u003c/code\u003e argument for \u003ccode\u003etransaction\u003c/code\u003e and related functions (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/381\"\u003e#381\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2c916851d088b650a5d643dc322a4919f456fe05\"\u003e2c91685\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/366\"\u003e#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-31\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-31\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eaccept \u003ccode\u003ebytes\u003c/code\u003e or \u003ccode\u003estr\u003c/code\u003e as base value for \u003ccode\u003eJsonProperty\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/380\"\u003e#380\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/e7a0c7c8fb7d80f009442f759abadbd336c0c828\"\u003ee7a0c7c\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/378\"\u003e#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eABORTED\u003c/code\u003e to retryable status codes (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/391\"\u003e#391\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/183c0c33a4429ad6bdaa9f141a8ac88ad4e3544d\"\u003e183c0c3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/383\"\u003e#383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd missing _get_for_dict method (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/368\"\u003e#368\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/55b80ffa086568e8f820f9ab304952bc39383bd8\"\u003e55b80ff\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eempty Entities for optional LocalStructuredProperty fields  (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/370\"\u003e#370\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/27a0969982013b37d3f6d8785c3ad127788661f9\"\u003e27a0969\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/369\"\u003e#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereturn type in DateTimeProperty._to_base_type docstring (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/371\"\u003e#371\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/0c549c89ff78554c4a4dde40973b503aa741422f\"\u003e0c549c8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.1.1...v1.1.2\"\u003e1.1.2\u003c/a\u003e (2020-03-16)\u003c/h2\u003e\u003ca id=\"user-content-112-2020-03-16\" class=\"anchor\" aria-label=\"Permalink: 1.1.2 (2020-03-16)\" href=\"#112-2020-03-16\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-32\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-32\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003echeck for legacy local structured property values (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/365\"\u003e#365\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f81f406d8e1059121341828836fce2aae5782fca\"\u003ef81f406\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/359\"\u003e#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emove stub (grpc communication channel) to client (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/90e06252df25fa2ce199543e7b01b17ec284aaf1\"\u003e90e0625\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/343\"\u003e#343\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.1.0...v1.1.1\"\u003e1.1.1\u003c/a\u003e (2020-03-05)\u003c/h2\u003e\u003ca id=\"user-content-111-2020-03-05\" class=\"anchor\" aria-label=\"Permalink: 1.1.1 (2020-03-05)\" href=\"#111-2020-03-05\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-33\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-33\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003efix bug with \u003ccode\u003eyield\u003c/code\u003e of empty list in tasklets (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/354\"\u003e#354\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2d60ebfe656abd75f6b9303550b2e03c2cbd79b7\"\u003e2d60ebf\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/353\"\u003e#353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLocalStructuredProperty keep_keys (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/355\"\u003e#355\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9ff1b3de817da50b58a6aed574d7e2f2dcf92310\"\u003e9ff1b3d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport nested sequences in parallel \u003ccode\u003eyield\u003c/code\u003e for tasklets (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/358\"\u003e#358\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/8c91e7ae8262f355a9eafe9051b3c1ef19d4c7cd\"\u003e8c91e7a\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/349\"\u003e#349\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.0.1...v1.1.0\"\u003e1.1.0\u003c/a\u003e (2020-03-02)\u003c/h2\u003e\u003ca id=\"user-content-110-2020-03-02\" class=\"anchor\" aria-label=\"Permalink: 1.1.0 (2020-03-02)\" href=\"#110-2020-03-02\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eFeatures\u003c/h3\u003e\u003ca id=\"user-content-features-16\" class=\"anchor\" aria-label=\"Permalink: Features\" href=\"#features-16\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ccode\u003eKey.to_legacy_urlsafe()\u003c/code\u003e (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/348\"\u003e#348\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/ab10e3c4998b8995d5a057163ce8d9dc8992111a\"\u003eab10e3c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-34\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-34\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eallow legacy ndb to read LocalStructuredProperty entities. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/344\"\u003e#344\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/7b0769236841cea1e864ae1e928a7b7021d300dc\"\u003e7b07692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix delete in transaction (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/333\"\u003e#333\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5c162f4337b837f7125b1fb03f8cff5fb1b4a356\"\u003e5c162f4\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/271\"\u003e#271\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake sure \u003ccode\u003ekey.Key\u003c/code\u003e uses namespace from client when not specified (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/339\"\u003e#339\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/44f02e46deef245f4d1ae80f9d2e4edd46ecd265\"\u003e44f02e4\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/337\"\u003e#337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eproperly exclude from indexes non-indexed subproperties of structured properties (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/dde6b85897457cef7a1080690df5cfae9cb6c31e\"\u003edde6b85\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/341\"\u003e#341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eresurrect support for compressed text property (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/5a864563dc6e155b73e2ac35af6519823c356e19\"\u003e5a86456\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/277\"\u003e#277\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse correct name when reading legacy structured properties with names (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/01d1256e9d41c20bb5836067455c4be4abe1c516\"\u003e01d1256\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/345\"\u003e#345\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v1.0.0...v1.0.1\"\u003e1.0.1\u003c/a\u003e (2020-02-11)\u003c/h2\u003e\u003ca id=\"user-content-101-2020-02-11\" class=\"anchor\" aria-label=\"Permalink: 1.0.1 (2020-02-11)\" href=\"#101-2020-02-11\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-35\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-35\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eattempt to have fewer transient errors in continuous integration (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/328\"\u003e#328\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/0484c7abf5a1529db5fecf17ebdf0252eab8449e\"\u003e0484c7a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect migration doc (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/313\"\u003e#313\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/317\"\u003e#317\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/efce24f16a877aecf78264946c22a2c9e3e97f53\"\u003eefce24f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edisuse \u003ccode\u003e__slots__\u003c/code\u003e in most places (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/330\"\u003e#330\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/a8b723b992e7a91860f6a73c0ee0fd7071e574d3\"\u003ea8b723b\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/311\"\u003e#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edon't set key on structured property entities (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/312\"\u003e#312\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/63f3d943001d77c1ea0eb9b719e71ecff4eb5dd6\"\u003e63f3d94\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/281\"\u003e#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix race condition in remote calls (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/329\"\u003e#329\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f5505100f065e71a14714369d8aef1f7b06ee838\"\u003ef550510\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/302\"\u003e#302\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003emake query options convert projection properties to strings (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/325\"\u003e#325\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/d1a4800c5f53490e6956c11797bd3472ea404b5b\"\u003ed1a4800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse multiple batches of limited size for large operations (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/321\"\u003e#321\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/8e6945377a4635632d0c35b7a41daebe501d4f0f\"\u003e8e69453\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/318\"\u003e#318\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse six string_types and integer_types for all isinstance() checks (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/323\"\u003e#323\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/133acf87b2a2efbfeae23ac9f629132cfb368a55\"\u003e133acf8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v0.2.2...v1.0.0\"\u003e1.0.0\u003c/a\u003e (2020-01-30)\u003c/h2\u003e\u003ca id=\"user-content-100-2020-01-30\" class=\"anchor\" aria-label=\"Permalink: 1.0.0 (2020-01-30)\" href=\"#100-2020-01-30\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-36\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-36\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eadd user agent prefix google-cloud-ndb + version (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/299\"\u003e#299\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9fa136b9c163b24aefde6ccbc227a1035fa24bcd\"\u003e9fa136b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFinish implementation of UserProperty. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/301\"\u003e#301\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/fd2e0ed9bb6cec8b5651c58eaee2b3ca8a96aebb\"\u003efd2e0ed\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/280\"\u003e#280\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug when wrapping base values. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/303\"\u003e#303\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/91ca8d9044671361b731323317cef720dd19be82\"\u003e91ca8d9\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/300\"\u003e#300\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix bug with the _GlobalCacheGetBatch. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/305\"\u003e#305\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/f2131654c6e5f67895fb0e3c09a507e8dc25c4bb\"\u003ef213165\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/294\"\u003e#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve \u003ccode\u003eQueryIterator.cursor_after\u003c/code\u003e. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/296\"\u003e#296\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/4ffedc7b5a2366be15dcd299052d8a46a748addd\"\u003e4ffedc7\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/292\"\u003e#292\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v0.2.1...v0.2.2\"\u003e0.2.2\u003c/a\u003e (2020-01-15)\u003c/h2\u003e\u003ca id=\"user-content-022-2020-01-15\" class=\"anchor\" aria-label=\"Permalink: 0.2.2 (2020-01-15)\" href=\"#022-2020-01-15\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-37\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-37\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eConvert NDB keys to Datastore keys for serialization. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/287\"\u003e#287\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/779411b562575bd2d6f0627ce1903c2996f3c529\"\u003e779411b\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/284\"\u003e#284\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix missing \u003cstrong\u003ene\u003c/strong\u003e methods (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/279\"\u003e#279\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/03dd5e1c78b8e8354379d743e2f810ef1bece4d2\"\u003e03dd5e1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix repr() for ComputedProperty (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/291\"\u003e#291\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2d8857b8e9a7119a47fd72ae76401af4e42bb5b5\"\u003e2d8857b\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/256\"\u003e#256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle \u003ccode\u003eint\u003c/code\u003e for DateTimeProperty (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/285\"\u003e#285\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/2fe5be31784a036062180f9c0f2c7b5eda978123\"\u003e2fe5be3\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/261\"\u003e#261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMore friendly error message when using \u003ccode\u003efetch_page\u003c/code\u003e with post-filters. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/a40ae74d74fa83119349de4b3a91f90df40d7ea5\"\u003ea40ae74\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/254\"\u003e#254\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca href=\"https://www.github.com/googleapis/python-ndb/compare/v0.2.0...v0.2.1\"\u003e0.2.1\u003c/a\u003e (2019-12-10)\u003c/h2\u003e\u003ca id=\"user-content-021-2019-12-10\" class=\"anchor\" aria-label=\"Permalink: 0.2.1 (2019-12-10)\" href=\"#021-2019-12-10\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eBug Fixes\u003c/h3\u003e\u003ca id=\"user-content-bug-fixes-38\" class=\"anchor\" aria-label=\"Permalink: Bug Fixes\" href=\"#bug-fixes-38\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eCorrectly handle \u003ccode\u003elimit\u003c/code\u003e and \u003ccode\u003eoffset\u003c/code\u003e when batching query results. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/237\"\u003e#237\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/8d3ce5c6cce9055d21400aa9feebc99e66393667\"\u003e8d3ce5c\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/236\"\u003e#236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove test cleanup. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/234\"\u003e#234\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/21f3d8b12a3e2fefe488a951fb5186c7620cb864\"\u003e21f3d8b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntegerProperty now accepts \u003ccode\u003elong\u003c/code\u003e type for Python 2.7. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/262\"\u003e#262\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/9591e569db32769c449d60dd3d9bdd6772dbc8f6\"\u003e9591e56\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/250\"\u003e#250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnstable order bug in unit test. (\u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/251\"\u003e#251\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/python-ndb/commit/7ff1df51056f8498dc4320fc4b2684ead34a9116\"\u003e7ff1df5\u003c/a\u003e), closes \u003ca href=\"https://www.github.com/googleapis/python-ndb/issues/244\"\u003e#244\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e0.2.0\u003c/h2\u003e\u003ca id=\"user-content-020\" class=\"anchor\" aria-label=\"Permalink: 0.2.0\" href=\"#020\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e11-06-2019 10:39 PST\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eImplementation Changes\u003c/h3\u003e\u003ca id=\"user-content-implementation-changes\" class=\"anchor\" aria-label=\"Permalink: Implementation Changes\" href=\"#implementation-changes\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ccode\u003equery.map()\u003c/code\u003e and \u003ccode\u003equery.map_async()\u003c/code\u003e hanging with empty result set. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/230\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/230/hovercard\"\u003e#230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove dunder version (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/202\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/202/hovercard\"\u003e#202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCheck context (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/211\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/211/hovercard\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eModel._gql\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/223\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/223/hovercard\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate intersphinx mapping (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/206\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/206/hovercard\"\u003e#206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edo not set meanings for compressed property when it has no value (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/200\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/200/hovercard\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew Features\u003c/h3\u003e\u003ca id=\"user-content-new-features\" class=\"anchor\" aria-label=\"Permalink: New Features\" href=\"#new-features\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ePython 2.7 compatibility (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/203\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/203/hovercard\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003etzinfo\u003c/code\u003e to DateTimeProperty. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/226\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/226/hovercard\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e_prepare_for_put\u003c/code\u003e for \u003ccode\u003eStructuredProperty\u003c/code\u003e and \u003ccode\u003eLocalStructuredProperty\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/221\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/221/hovercard\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eQuery.map\u003c/code\u003e and \u003ccode\u003eQuery.map_async\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/218\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/218/hovercard\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow class member values in projection and distinct queries  (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/214\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/214/hovercard\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFuture.cancel()\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/204\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/204/hovercard\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-12\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-12\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eUpdate README to include Python 2 support. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/231\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/231/hovercard\"\u003e#231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in MIGRATION_NOTES.md (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/208\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/208/hovercard\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpelling fixes. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/209\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/209/hovercard\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd spell checking dependencies for documentation build. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/196\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/196/hovercard\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInternal / Testing Changes\u003c/h3\u003e\u003ca id=\"user-content-internal--testing-changes\" class=\"anchor\" aria-label=\"Permalink: Internal / Testing Changes\" href=\"#internal--testing-changes\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eEnable release-please (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/228\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/228/hovercard\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce local redis for tests (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/191\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/191/hovercard\"\u003e#191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse .kokoro configs from templates. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/194\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/194/hovercard\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e0.1.0\u003c/h2\u003e\u003ca id=\"user-content-010\" class=\"anchor\" aria-label=\"Permalink: 0.1.0\" href=\"#010\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e09-10-2019 13:43 PDT\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDeprecations\u003c/h3\u003e\u003ca id=\"user-content-deprecations\" class=\"anchor\" aria-label=\"Permalink: Deprecations\" href=\"#deprecations\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDeprecate \u003ccode\u003emax_memcache_items\u003c/code\u003e, memcache options, \u003ccode\u003eforce_rewrites\u003c/code\u003e, \u003ccode\u003eQuery.map()\u003c/code\u003e, \u003ccode\u003eQuery.map_async()\u003c/code\u003e, \u003ccode\u003eblobstore\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/168\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/168/hovercard\"\u003e#168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eImplementation Changes\u003c/h3\u003e\u003ca id=\"user-content-implementation-changes-1\" class=\"anchor\" aria-label=\"Permalink: Implementation Changes\" href=\"#implementation-changes-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eFix error retrieving values for properties with different stored name (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/187\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/187/hovercard\"\u003e#187\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse correct class when deserializing a PolyModel entity. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/186\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/186/hovercard\"\u003e#186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport legacy compressed properties back and forth (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/183\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/183/hovercard\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStore Structured Properties in backwards compatible way (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/184\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/184/hovercard\"\u003e#184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow put and get to work with compressed blob properties (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/175\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/175/hovercard\"\u003e#175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise an exception when storing entity with partial key without Datastore. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/171\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/171/hovercard\"\u003e#171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize to prefer \u003ccode\u003eproject\u003c/code\u003e over \u003ccode\u003eapp\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/170\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/170/hovercard\"\u003e#170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce naive datetimes for \u003ccode\u003eDateTimeProperty\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/167\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/167/hovercard\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle projections with structured properties. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/166\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/166/hovercard\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix polymodel put and get (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/151\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/151/hovercard\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e_prepare_for_put\u003c/code\u003e was not being called at entity level (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/138\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/138/hovercard\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix key property. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/136\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/136/hovercard\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix thread local context. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/131\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/131/hovercard\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: Respect \u003ccode\u003e_indexed\u003c/code\u003e flag of properties. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/127\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/127/hovercard\"\u003e#127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBackwards compatibility with older style structured properties. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/126\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/126/hovercard\"\u003e#126\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew Features\u003c/h3\u003e\u003ca id=\"user-content-new-features-1\" class=\"anchor\" aria-label=\"Permalink: New Features\" href=\"#new-features-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eRead legacy data with Repeated Structured Expando properties. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/176\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/176/hovercard\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eContext.call_on_commit\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/159\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/159/hovercard\"\u003e#159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eContext.flush\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/158\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/158/hovercard\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003euse_datastore\u003c/code\u003e flag. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/155\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/155/hovercard\"\u003e#155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003etasklets.toplevel\u003c/code\u003e. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/157\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/157/hovercard\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd RedisCache implementation of global cache (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/150\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/150/hovercard\"\u003e#150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement Global Cache (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/148\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/148/hovercard\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003endb.Expando properties load and save (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/117\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/117/hovercard\"\u003e#117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement cache policy. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/116\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/116/hovercard\"\u003e#116\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-13\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-13\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eFix Kokoro publish-docs job (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/153\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/153/hovercard\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Migration Notes. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/152\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/152/hovercard\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eproject_urls\u003c/code\u003e for pypi page (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/144\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/144/hovercard\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTRAMPOLINE_BUILD_FILE\u003c/code\u003e in docs/common.cfg. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/143\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/143/hovercard\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd kokoro docs job to publish to googleapis.dev. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/142\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/142/hovercard\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial version of migration guide (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/121\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/121/hovercard\"\u003e#121\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd spellcheck sphinx extension to docs build process (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/123\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/123/hovercard\"\u003e#123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInternal / Testing Changes\u003c/h3\u003e\u003ca id=\"user-content-internal--testing-changes-1\" class=\"anchor\" aria-label=\"Permalink: Internal / Testing Changes\" href=\"#internal--testing-changes-1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eClean up usage of \u003ccode\u003eobject.__new__\u003c/code\u003e and mocks for \u003ccode\u003eModel\u003c/code\u003e in unit tests (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/177\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/177/hovercard\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProve tasklets can be Python 2.7 and 3.7 compatible. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/174\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/174/hovercard\"\u003e#174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDiscard src directory and fix flake8 failures (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/173\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/173/hovercard\"\u003e#173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd tests for \u003ccode\u003eModel.__eq__()\u003c/code\u003e (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/169\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/169/hovercard\"\u003e#169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove skip flag accidentally left over (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/154\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/154/hovercard\"\u003e#154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTry to get kokoro to add indexes for system tests (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/145\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/145/hovercard\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd system test for PolyModel (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/133\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/133/hovercard\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix system test under Datastore Emulator. (Fixes \u003ca href=\"https://github.com/googleapis/python-ndb/pull/118\" data-hovercard-type=\"issue\" data-hovercard-url=\"/googleapis/python-ndb/issues/118/hovercard\"\u003e#118\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/119\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/119/hovercard\"\u003e#119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd unit tests for \u003ccode\u003e_entity_from_ds_entity\u003c/code\u003e expando support (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/120\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/120/hovercard\"\u003e#120\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e0.0.1\u003c/h2\u003e\u003ca id=\"user-content-001\" class=\"anchor\" aria-label=\"Permalink: 0.0.1\" href=\"#001\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e06-11-2019 16:30 PDT\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eImplementation Changes\u003c/h3\u003e\u003ca id=\"user-content-implementation-changes-2\" class=\"anchor\" aria-label=\"Permalink: Implementation Changes\" href=\"#implementation-changes-2\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eQuery repeated structured properties. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/103\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/103/hovercard\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Structured Properties (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/102\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/102/hovercard\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew Features\u003c/h3\u003e\u003ca id=\"user-content-new-features-2\" class=\"anchor\" aria-label=\"Permalink: New Features\" href=\"#new-features-2\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eImplement expando model (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/99\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/99/hovercard\"\u003e#99\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModel properties (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/96\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/96/hovercard\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplemented tasklets.synctasklet (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/58\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/58/hovercard\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement LocalStructuredProperty (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/93\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/93/hovercard\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement hooks. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/95\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/95/hovercard\"\u003e#95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThree easy Model methods. (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/94\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/94/hovercard\"\u003e#94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModel.get or insert (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/92\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/92/hovercard\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eModel.get_by_id\u003c/code\u003e and \u003ccode\u003eModel.get_by_id_async\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eModel.allocate_ids\u003c/code\u003e and \u003ccode\u003eModel.allocate_ids_async\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eQuery.fetch_page\u003c/code\u003e and \u003ccode\u003eQuery.fetch_page_async\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eQuery.count\u003c/code\u003e and \u003ccode\u003eQuery.count_async\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eQuery.get\u003c/code\u003e and \u003ccode\u003eQuery.get_async\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDocumentation\u003c/h3\u003e\u003ca id=\"user-content-documentation-14\" class=\"anchor\" aria-label=\"Permalink: Documentation\" href=\"#documentation-14\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eupdate sphinx version and eliminate all warnings (\u003ca href=\"https://github.com/googleapis/python-ndb/pull/105\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/googleapis/python-ndb/pull/105/hovercard\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e0.0.1dev1\u003c/h2\u003e\u003ca id=\"user-content-001dev1\" class=\"anchor\" aria-label=\"Permalink: 0.0.1dev1\" href=\"#001dev1\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInitial development release of NDB client library.\u003c/p\u003e\n\u003c/article\u003e","richTextTruncated":false,"renderedFileInfo":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"Changelog","fully_qualified_name":"Changelog","kind":"section_1","ident_start":2,"ident_end":11,"extent_start":0,"extent_end":61071,"ident_utf16":{"start":{"line_number":0,"utf16_col":2},"end":{"line_number":0,"utf16_col":11}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":672,"utf16_col":0}}},{"name":"[2.4.0](https://github.com/googleapis/google-cloud-python/compare/google-cloud-ndb-v2.3.4...google-cloud-ndb-v2.4.0) (2025-12-15)","fully_qualified_name":"[2.4.0](https://github.com/googleapis/google-cloud-python/compare/google-cloud-ndb-v2.3.4...google-cloud-ndb-v2.4.0) (2025-12-15)","kind":"section_2","ident_start":92,"ident_end":221,"extent_start":89,"extent_end":421,"ident_utf16":{"start":{"line_number":6,"utf16_col":3},"end":{"line_number":6,"utf16_col":132}},"extent_utf16":{"start":{"line_number":6,"utf16_col":0},"end":{"line_number":13,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":228,"ident_end":236,"extent_start":224,"extent_end":421,"ident_utf16":{"start":{"line_number":9,"utf16_col":4},"end":{"line_number":9,"utf16_col":12}},"extent_utf16":{"start":{"line_number":9,"utf16_col":0},"end":{"line_number":13,"utf16_col":0}}},{"name":"[2.3.4](https://github.com/googleapis/python-ndb/compare/v2.3.3...v2.3.4) (2025-06-11)","fully_qualified_name":"[2.3.4](https://github.com/googleapis/python-ndb/compare/v2.3.3...v2.3.4) (2025-06-11)","kind":"section_2","ident_start":424,"ident_end":510,"extent_start":421,"extent_end":733,"ident_utf16":{"start":{"line_number":13,"utf16_col":3},"end":{"line_number":13,"utf16_col":89}},"extent_utf16":{"start":{"line_number":13,"utf16_col":0},"end":{"line_number":20,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":517,"ident_end":526,"extent_start":513,"extent_end":733,"ident_utf16":{"start":{"line_number":16,"utf16_col":4},"end":{"line_number":16,"utf16_col":13}},"extent_utf16":{"start":{"line_number":16,"utf16_col":0},"end":{"line_number":20,"utf16_col":0}}},{"name":"[2.3.3](https://github.com/googleapis/python-ndb/compare/v2.3.2...v2.3.3) (2025-05-09)","fully_qualified_name":"[2.3.3](https://github.com/googleapis/python-ndb/compare/v2.3.2...v2.3.3) (2025-05-09)","kind":"section_2","ident_start":736,"ident_end":822,"extent_start":733,"extent_end":1052,"ident_utf16":{"start":{"line_number":20,"utf16_col":3},"end":{"line_number":20,"utf16_col":89}},"extent_utf16":{"start":{"line_number":20,"utf16_col":0},"end":{"line_number":27,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":829,"ident_end":838,"extent_start":825,"extent_end":1052,"ident_utf16":{"start":{"line_number":23,"utf16_col":4},"end":{"line_number":23,"utf16_col":13}},"extent_utf16":{"start":{"line_number":23,"utf16_col":0},"end":{"line_number":27,"utf16_col":0}}},{"name":"[2.3.2](https://github.com/googleapis/python-ndb/compare/v2.3.1...v2.3.2) (2024-07-15)","fully_qualified_name":"[2.3.2](https://github.com/googleapis/python-ndb/compare/v2.3.1...v2.3.2) (2024-07-15)","kind":"section_2","ident_start":1055,"ident_end":1141,"extent_start":1052,"extent_end":1345,"ident_utf16":{"start":{"line_number":27,"utf16_col":3},"end":{"line_number":27,"utf16_col":89}},"extent_utf16":{"start":{"line_number":27,"utf16_col":0},"end":{"line_number":34,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":1148,"ident_end":1157,"extent_start":1144,"extent_end":1345,"ident_utf16":{"start":{"line_number":30,"utf16_col":4},"end":{"line_number":30,"utf16_col":13}},"extent_utf16":{"start":{"line_number":30,"utf16_col":0},"end":{"line_number":34,"utf16_col":0}}},{"name":"[2.3.1](https://github.com/googleapis/python-ndb/compare/v2.3.0...v2.3.1) (2024-03-16)","fully_qualified_name":"[2.3.1](https://github.com/googleapis/python-ndb/compare/v2.3.0...v2.3.1) (2024-03-16)","kind":"section_2","ident_start":1348,"ident_end":1434,"extent_start":1345,"extent_end":2830,"ident_utf16":{"start":{"line_number":34,"utf16_col":3},"end":{"line_number":34,"utf16_col":89}},"extent_utf16":{"start":{"line_number":34,"utf16_col":0},"end":{"line_number":50,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":1441,"ident_end":1450,"extent_start":1437,"extent_end":2151,"ident_utf16":{"start":{"line_number":37,"utf16_col":4},"end":{"line_number":37,"utf16_col":13}},"extent_utf16":{"start":{"line_number":37,"utf16_col":0},"end":{"line_number":44,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":2155,"ident_end":2168,"extent_start":2151,"extent_end":2830,"ident_utf16":{"start":{"line_number":44,"utf16_col":4},"end":{"line_number":44,"utf16_col":17}},"extent_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":50,"utf16_col":0}}},{"name":"[2.3.0](https://github.com/googleapis/python-ndb/compare/v2.2.2...v2.3.0) (2024-03-01)","fully_qualified_name":"[2.3.0](https://github.com/googleapis/python-ndb/compare/v2.2.2...v2.3.0) (2024-03-01)","kind":"section_2","ident_start":2833,"ident_end":2919,"extent_start":2830,"extent_end":5750,"ident_utf16":{"start":{"line_number":50,"utf16_col":3},"end":{"line_number":50,"utf16_col":89}},"extent_utf16":{"start":{"line_number":50,"utf16_col":0},"end":{"line_number":77,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":2926,"ident_end":2934,"extent_start":2922,"extent_end":4381,"ident_utf16":{"start":{"line_number":53,"utf16_col":4},"end":{"line_number":53,"utf16_col":12}},"extent_utf16":{"start":{"line_number":53,"utf16_col":0},"end":{"line_number":64,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":4385,"ident_end":4394,"extent_start":4381,"extent_end":4908,"ident_utf16":{"start":{"line_number":64,"utf16_col":4},"end":{"line_number":64,"utf16_col":13}},"extent_utf16":{"start":{"line_number":64,"utf16_col":0},"end":{"line_number":70,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":4912,"ident_end":4925,"extent_start":4908,"extent_end":5750,"ident_utf16":{"start":{"line_number":70,"utf16_col":4},"end":{"line_number":70,"utf16_col":17}},"extent_utf16":{"start":{"line_number":70,"utf16_col":0},"end":{"line_number":77,"utf16_col":0}}},{"name":"[2.2.2](https://github.com/googleapis/python-ndb/compare/v2.2.1...v2.2.2) (2023-09-19)","fully_qualified_name":"[2.2.2](https://github.com/googleapis/python-ndb/compare/v2.2.1...v2.2.2) (2023-09-19)","kind":"section_2","ident_start":5753,"ident_end":5839,"extent_start":5750,"extent_end":6153,"ident_utf16":{"start":{"line_number":77,"utf16_col":3},"end":{"line_number":77,"utf16_col":89}},"extent_utf16":{"start":{"line_number":77,"utf16_col":0},"end":{"line_number":84,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":5846,"ident_end":5859,"extent_start":5842,"extent_end":6153,"ident_utf16":{"start":{"line_number":80,"utf16_col":4},"end":{"line_number":80,"utf16_col":17}},"extent_utf16":{"start":{"line_number":80,"utf16_col":0},"end":{"line_number":84,"utf16_col":0}}},{"name":"[2.2.1](https://github.com/googleapis/python-ndb/compare/v2.2.0...v2.2.1) (2023-09-15)","fully_qualified_name":"[2.2.1](https://github.com/googleapis/python-ndb/compare/v2.2.0...v2.2.1) (2023-09-15)","kind":"section_2","ident_start":6156,"ident_end":6242,"extent_start":6153,"extent_end":6725,"ident_utf16":{"start":{"line_number":84,"utf16_col":3},"end":{"line_number":84,"utf16_col":89}},"extent_utf16":{"start":{"line_number":84,"utf16_col":0},"end":{"line_number":96,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":6249,"ident_end":6258,"extent_start":6245,"extent_end":6465,"ident_utf16":{"start":{"line_number":87,"utf16_col":4},"end":{"line_number":87,"utf16_col":13}},"extent_utf16":{"start":{"line_number":87,"utf16_col":0},"end":{"line_number":92,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":6469,"ident_end":6482,"extent_start":6465,"extent_end":6725,"ident_utf16":{"start":{"line_number":92,"utf16_col":4},"end":{"line_number":92,"utf16_col":17}},"extent_utf16":{"start":{"line_number":92,"utf16_col":0},"end":{"line_number":96,"utf16_col":0}}},{"name":"[2.2.0](https://github.com/googleapis/python-ndb/compare/v2.1.1...v2.2.0) (2023-07-26)","fully_qualified_name":"[2.2.0](https://github.com/googleapis/python-ndb/compare/v2.1.1...v2.2.0) (2023-07-26)","kind":"section_2","ident_start":6728,"ident_end":6814,"extent_start":6725,"extent_end":7244,"ident_utf16":{"start":{"line_number":96,"utf16_col":3},"end":{"line_number":96,"utf16_col":89}},"extent_utf16":{"start":{"line_number":96,"utf16_col":0},"end":{"line_number":108,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":6821,"ident_end":6829,"extent_start":6817,"extent_end":7016,"ident_utf16":{"start":{"line_number":99,"utf16_col":4},"end":{"line_number":99,"utf16_col":12}},"extent_utf16":{"start":{"line_number":99,"utf16_col":0},"end":{"line_number":104,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":7020,"ident_end":7033,"extent_start":7016,"extent_end":7244,"ident_utf16":{"start":{"line_number":104,"utf16_col":4},"end":{"line_number":104,"utf16_col":17}},"extent_utf16":{"start":{"line_number":104,"utf16_col":0},"end":{"line_number":108,"utf16_col":0}}},{"name":"[2.1.1](https://github.com/googleapis/python-ndb/compare/v2.1.0...v2.1.1) (2023-02-28)","fully_qualified_name":"[2.1.1](https://github.com/googleapis/python-ndb/compare/v2.1.0...v2.1.1) (2023-02-28)","kind":"section_2","ident_start":7247,"ident_end":7333,"extent_start":7244,"extent_end":8152,"ident_utf16":{"start":{"line_number":108,"utf16_col":3},"end":{"line_number":108,"utf16_col":89}},"extent_utf16":{"start":{"line_number":108,"utf16_col":0},"end":{"line_number":121,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":7340,"ident_end":7349,"extent_start":7336,"extent_end":7631,"ident_utf16":{"start":{"line_number":111,"utf16_col":4},"end":{"line_number":111,"utf16_col":13}},"extent_utf16":{"start":{"line_number":111,"utf16_col":0},"end":{"line_number":116,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":7635,"ident_end":7648,"extent_start":7631,"extent_end":8152,"ident_utf16":{"start":{"line_number":116,"utf16_col":4},"end":{"line_number":116,"utf16_col":17}},"extent_utf16":{"start":{"line_number":116,"utf16_col":0},"end":{"line_number":121,"utf16_col":0}}},{"name":"[2.1.0](https://github.com/googleapis/python-ndb/compare/v2.0.0...v2.1.0) (2022-12-15)","fully_qualified_name":"[2.1.0](https://github.com/googleapis/python-ndb/compare/v2.0.0...v2.1.0) (2022-12-15)","kind":"section_2","ident_start":8155,"ident_end":8241,"extent_start":8152,"extent_end":8698,"ident_utf16":{"start":{"line_number":121,"utf16_col":3},"end":{"line_number":121,"utf16_col":89}},"extent_utf16":{"start":{"line_number":121,"utf16_col":0},"end":{"line_number":133,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":8248,"ident_end":8256,"extent_start":8244,"extent_end":8461,"ident_utf16":{"start":{"line_number":124,"utf16_col":4},"end":{"line_number":124,"utf16_col":12}},"extent_utf16":{"start":{"line_number":124,"utf16_col":0},"end":{"line_number":129,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":8465,"ident_end":8474,"extent_start":8461,"extent_end":8698,"ident_utf16":{"start":{"line_number":129,"utf16_col":4},"end":{"line_number":129,"utf16_col":13}},"extent_utf16":{"start":{"line_number":129,"utf16_col":0},"end":{"line_number":133,"utf16_col":0}}},{"name":"[2.0.0](https://github.com/googleapis/python-ndb/compare/v1.12.0...v2.0.0) (2022-12-06)","fully_qualified_name":"[2.0.0](https://github.com/googleapis/python-ndb/compare/v1.12.0...v2.0.0) (2022-12-06)","kind":"section_2","ident_start":8701,"ident_end":8788,"extent_start":8698,"extent_end":9774,"ident_utf16":{"start":{"line_number":133,"utf16_col":3},"end":{"line_number":133,"utf16_col":90}},"extent_utf16":{"start":{"line_number":133,"utf16_col":0},"end":{"line_number":153,"utf16_col":0}}},{"name":"⚠ BREAKING CHANGES","fully_qualified_name":"⚠ BREAKING CHANGES","kind":"section_3","ident_start":8795,"ident_end":8815,"extent_start":8791,"extent_end":8881,"ident_utf16":{"start":{"line_number":136,"utf16_col":4},"end":{"line_number":136,"utf16_col":22}},"extent_utf16":{"start":{"line_number":136,"utf16_col":0},"end":{"line_number":140,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":8885,"ident_end":8893,"extent_start":8881,"extent_end":9065,"ident_utf16":{"start":{"line_number":140,"utf16_col":4},"end":{"line_number":140,"utf16_col":12}},"extent_utf16":{"start":{"line_number":140,"utf16_col":0},"end":{"line_number":145,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":9069,"ident_end":9078,"extent_start":9065,"extent_end":9774,"ident_utf16":{"start":{"line_number":145,"utf16_col":4},"end":{"line_number":145,"utf16_col":13}},"extent_utf16":{"start":{"line_number":145,"utf16_col":0},"end":{"line_number":153,"utf16_col":0}}},{"name":"[1.12.0](https://github.com/googleapis/python-ndb/compare/v1.11.2...v1.12.0) (2022-11-29)","fully_qualified_name":"[1.12.0](https://github.com/googleapis/python-ndb/compare/v1.11.2...v1.12.0) (2022-11-29)","kind":"section_2","ident_start":9777,"ident_end":9866,"extent_start":9774,"extent_end":12309,"ident_utf16":{"start":{"line_number":153,"utf16_col":3},"end":{"line_number":153,"utf16_col":92}},"extent_utf16":{"start":{"line_number":153,"utf16_col":0},"end":{"line_number":174,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":9873,"ident_end":9882,"extent_start":9869,"extent_end":10440,"ident_utf16":{"start":{"line_number":156,"utf16_col":4},"end":{"line_number":156,"utf16_col":13}},"extent_utf16":{"start":{"line_number":156,"utf16_col":0},"end":{"line_number":163,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":10444,"ident_end":10457,"extent_start":10440,"extent_end":12309,"ident_utf16":{"start":{"line_number":163,"utf16_col":4},"end":{"line_number":163,"utf16_col":17}},"extent_utf16":{"start":{"line_number":163,"utf16_col":0},"end":{"line_number":174,"utf16_col":0}}},{"name":"[1.11.2](https://github.com/googleapis/python-ndb/compare/v1.11.1...v1.11.2) (2022-06-03)","fully_qualified_name":"[1.11.2](https://github.com/googleapis/python-ndb/compare/v1.11.1...v1.11.2) (2022-06-03)","kind":"section_2","ident_start":12312,"ident_end":12401,"extent_start":12309,"extent_end":12630,"ident_utf16":{"start":{"line_number":174,"utf16_col":3},"end":{"line_number":174,"utf16_col":92}},"extent_utf16":{"start":{"line_number":174,"utf16_col":0},"end":{"line_number":181,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":12408,"ident_end":12421,"extent_start":12404,"extent_end":12630,"ident_utf16":{"start":{"line_number":177,"utf16_col":4},"end":{"line_number":177,"utf16_col":17}},"extent_utf16":{"start":{"line_number":177,"utf16_col":0},"end":{"line_number":181,"utf16_col":0}}},{"name":"[1.11.1](https://www.github.com/googleapis/python-ndb/compare/v1.11.0...v1.11.1) (2021-11-03)","fully_qualified_name":"[1.11.1](https://www.github.com/googleapis/python-ndb/compare/v1.11.0...v1.11.1) (2021-11-03)","kind":"section_2","ident_start":12633,"ident_end":12726,"extent_start":12630,"extent_end":13027,"ident_utf16":{"start":{"line_number":181,"utf16_col":3},"end":{"line_number":181,"utf16_col":96}},"extent_utf16":{"start":{"line_number":181,"utf16_col":0},"end":{"line_number":188,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":12733,"ident_end":12742,"extent_start":12729,"extent_end":13027,"ident_utf16":{"start":{"line_number":184,"utf16_col":4},"end":{"line_number":184,"utf16_col":13}},"extent_utf16":{"start":{"line_number":184,"utf16_col":0},"end":{"line_number":188,"utf16_col":0}}},{"name":"[1.11.0](https://www.github.com/googleapis/python-ndb/compare/v1.10.5...v1.11.0) (2021-10-28)","fully_qualified_name":"[1.11.0](https://www.github.com/googleapis/python-ndb/compare/v1.10.5...v1.11.0) (2021-10-28)","kind":"section_2","ident_start":13030,"ident_end":13123,"extent_start":13027,"extent_end":13343,"ident_utf16":{"start":{"line_number":188,"utf16_col":3},"end":{"line_number":188,"utf16_col":96}},"extent_utf16":{"start":{"line_number":188,"utf16_col":0},"end":{"line_number":195,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":13130,"ident_end":13138,"extent_start":13126,"extent_end":13343,"ident_utf16":{"start":{"line_number":191,"utf16_col":4},"end":{"line_number":191,"utf16_col":12}},"extent_utf16":{"start":{"line_number":191,"utf16_col":0},"end":{"line_number":195,"utf16_col":0}}},{"name":"[1.10.5](https://www.github.com/googleapis/python-ndb/compare/v1.10.4...v1.10.5) (2021-10-08)","fully_qualified_name":"[1.10.5](https://www.github.com/googleapis/python-ndb/compare/v1.10.4...v1.10.5) (2021-10-08)","kind":"section_2","ident_start":13346,"ident_end":13439,"extent_start":13343,"extent_end":13748,"ident_utf16":{"start":{"line_number":195,"utf16_col":3},"end":{"line_number":195,"utf16_col":96}},"extent_utf16":{"start":{"line_number":195,"utf16_col":0},"end":{"line_number":202,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":13446,"ident_end":13455,"extent_start":13442,"extent_end":13748,"ident_utf16":{"start":{"line_number":198,"utf16_col":4},"end":{"line_number":198,"utf16_col":13}},"extent_utf16":{"start":{"line_number":198,"utf16_col":0},"end":{"line_number":202,"utf16_col":0}}},{"name":"[1.10.4](https://www.github.com/googleapis/python-ndb/compare/v1.10.3...v1.10.4) (2021-09-28)","fully_qualified_name":"[1.10.4](https://www.github.com/googleapis/python-ndb/compare/v1.10.3...v1.10.4) (2021-09-28)","kind":"section_2","ident_start":13751,"ident_end":13844,"extent_start":13748,"extent_end":14089,"ident_utf16":{"start":{"line_number":202,"utf16_col":3},"end":{"line_number":202,"utf16_col":96}},"extent_utf16":{"start":{"line_number":202,"utf16_col":0},"end":{"line_number":209,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":13851,"ident_end":13860,"extent_start":13847,"extent_end":14089,"ident_utf16":{"start":{"line_number":205,"utf16_col":4},"end":{"line_number":205,"utf16_col":13}},"extent_utf16":{"start":{"line_number":205,"utf16_col":0},"end":{"line_number":209,"utf16_col":0}}},{"name":"[1.10.3](https://www.github.com/googleapis/python-ndb/compare/v1.10.2...v1.10.3) (2021-09-07)","fully_qualified_name":"[1.10.3](https://www.github.com/googleapis/python-ndb/compare/v1.10.2...v1.10.3) (2021-09-07)","kind":"section_2","ident_start":14092,"ident_end":14185,"extent_start":14089,"extent_end":14499,"ident_utf16":{"start":{"line_number":209,"utf16_col":3},"end":{"line_number":209,"utf16_col":96}},"extent_utf16":{"start":{"line_number":209,"utf16_col":0},"end":{"line_number":216,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":14192,"ident_end":14201,"extent_start":14188,"extent_end":14499,"ident_utf16":{"start":{"line_number":212,"utf16_col":4},"end":{"line_number":212,"utf16_col":13}},"extent_utf16":{"start":{"line_number":212,"utf16_col":0},"end":{"line_number":216,"utf16_col":0}}},{"name":"[1.10.2](https://www.github.com/googleapis/python-ndb/compare/v1.10.1...v1.10.2) (2021-08-31)","fully_qualified_name":"[1.10.2](https://www.github.com/googleapis/python-ndb/compare/v1.10.1...v1.10.2) (2021-08-31)","kind":"section_2","ident_start":14502,"ident_end":14595,"extent_start":14499,"extent_end":14833,"ident_utf16":{"start":{"line_number":216,"utf16_col":3},"end":{"line_number":216,"utf16_col":96}},"extent_utf16":{"start":{"line_number":216,"utf16_col":0},"end":{"line_number":223,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":14602,"ident_end":14611,"extent_start":14598,"extent_end":14833,"ident_utf16":{"start":{"line_number":219,"utf16_col":4},"end":{"line_number":219,"utf16_col":13}},"extent_utf16":{"start":{"line_number":219,"utf16_col":0},"end":{"line_number":223,"utf16_col":0}}},{"name":"[1.10.1](https://www.github.com/googleapis/python-ndb/compare/v1.10.0...v1.10.1) (2021-08-11)","fully_qualified_name":"[1.10.1](https://www.github.com/googleapis/python-ndb/compare/v1.10.0...v1.10.1) (2021-08-11)","kind":"section_2","ident_start":14836,"ident_end":14929,"extent_start":14833,"extent_end":15839,"ident_utf16":{"start":{"line_number":223,"utf16_col":3},"end":{"line_number":223,"utf16_col":96}},"extent_utf16":{"start":{"line_number":223,"utf16_col":0},"end":{"line_number":232,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":14936,"ident_end":14945,"extent_start":14932,"extent_end":15839,"ident_utf16":{"start":{"line_number":226,"utf16_col":4},"end":{"line_number":226,"utf16_col":13}},"extent_utf16":{"start":{"line_number":226,"utf16_col":0},"end":{"line_number":232,"utf16_col":0}}},{"name":"[1.10.0](https://www.github.com/googleapis/python-ndb/compare/v1.9.0...v1.10.0) (2021-07-20)","fully_qualified_name":"[1.10.0](https://www.github.com/googleapis/python-ndb/compare/v1.9.0...v1.10.0) (2021-07-20)","kind":"section_2","ident_start":15842,"ident_end":15934,"extent_start":15839,"extent_end":17051,"ident_utf16":{"start":{"line_number":232,"utf16_col":3},"end":{"line_number":232,"utf16_col":95}},"extent_utf16":{"start":{"line_number":232,"utf16_col":0},"end":{"line_number":246,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":15941,"ident_end":15949,"extent_start":15937,"extent_end":16167,"ident_utf16":{"start":{"line_number":235,"utf16_col":4},"end":{"line_number":235,"utf16_col":12}},"extent_utf16":{"start":{"line_number":235,"utf16_col":0},"end":{"line_number":240,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":16171,"ident_end":16180,"extent_start":16167,"extent_end":17051,"ident_utf16":{"start":{"line_number":240,"utf16_col":4},"end":{"line_number":240,"utf16_col":13}},"extent_utf16":{"start":{"line_number":240,"utf16_col":0},"end":{"line_number":246,"utf16_col":0}}},{"name":"[1.9.0](https://www.github.com/googleapis/python-ndb/compare/v1.8.0...v1.9.0) (2021-06-07)","fully_qualified_name":"[1.9.0](https://www.github.com/googleapis/python-ndb/compare/v1.8.0...v1.9.0) (2021-06-07)","kind":"section_2","ident_start":17054,"ident_end":17144,"extent_start":17051,"extent_end":19952,"ident_utf16":{"start":{"line_number":246,"utf16_col":3},"end":{"line_number":246,"utf16_col":93}},"extent_utf16":{"start":{"line_number":246,"utf16_col":0},"end":{"line_number":266,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":17151,"ident_end":17159,"extent_start":17147,"extent_end":17389,"ident_utf16":{"start":{"line_number":249,"utf16_col":4},"end":{"line_number":249,"utf16_col":12}},"extent_utf16":{"start":{"line_number":249,"utf16_col":0},"end":{"line_number":254,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":17393,"ident_end":17402,"extent_start":17389,"extent_end":19952,"ident_utf16":{"start":{"line_number":254,"utf16_col":4},"end":{"line_number":254,"utf16_col":13}},"extent_utf16":{"start":{"line_number":254,"utf16_col":0},"end":{"line_number":266,"utf16_col":0}}},{"name":"[1.8.0](https://www.github.com/googleapis/python-ndb/compare/v1.7.3...v1.8.0) (2021-04-06)","fully_qualified_name":"[1.8.0](https://www.github.com/googleapis/python-ndb/compare/v1.7.3...v1.8.0) (2021-04-06)","kind":"section_2","ident_start":19955,"ident_end":20045,"extent_start":19952,"extent_end":22792,"ident_utf16":{"start":{"line_number":266,"utf16_col":3},"end":{"line_number":266,"utf16_col":93}},"extent_utf16":{"start":{"line_number":266,"utf16_col":0},"end":{"line_number":286,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":20052,"ident_end":20060,"extent_start":20048,"extent_end":20360,"ident_utf16":{"start":{"line_number":269,"utf16_col":4},"end":{"line_number":269,"utf16_col":12}},"extent_utf16":{"start":{"line_number":269,"utf16_col":0},"end":{"line_number":274,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":20364,"ident_end":20373,"extent_start":20360,"extent_end":22792,"ident_utf16":{"start":{"line_number":274,"utf16_col":4},"end":{"line_number":274,"utf16_col":13}},"extent_utf16":{"start":{"line_number":274,"utf16_col":0},"end":{"line_number":286,"utf16_col":0}}},{"name":"[1.7.3](https://www.github.com/googleapis/python-ndb/compare/v1.7.2...v1.7.3) (2021-01-21)","fully_qualified_name":"[1.7.3](https://www.github.com/googleapis/python-ndb/compare/v1.7.2...v1.7.3) (2021-01-21)","kind":"section_2","ident_start":22795,"ident_end":22885,"extent_start":22792,"extent_end":24128,"ident_utf16":{"start":{"line_number":286,"utf16_col":3},"end":{"line_number":286,"utf16_col":93}},"extent_utf16":{"start":{"line_number":286,"utf16_col":0},"end":{"line_number":301,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":22892,"ident_end":22901,"extent_start":22888,"extent_end":23414,"ident_utf16":{"start":{"line_number":289,"utf16_col":4},"end":{"line_number":289,"utf16_col":13}},"extent_utf16":{"start":{"line_number":289,"utf16_col":0},"end":{"line_number":295,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":23418,"ident_end":23431,"extent_start":23414,"extent_end":24128,"ident_utf16":{"start":{"line_number":295,"utf16_col":4},"end":{"line_number":295,"utf16_col":17}},"extent_utf16":{"start":{"line_number":295,"utf16_col":0},"end":{"line_number":301,"utf16_col":0}}},{"name":"[1.7.2](https://www.github.com/googleapis/python-ndb/compare/v1.7.1...v1.7.2) (2020-12-16)","fully_qualified_name":"[1.7.2](https://www.github.com/googleapis/python-ndb/compare/v1.7.1...v1.7.2) (2020-12-16)","kind":"section_2","ident_start":24131,"ident_end":24221,"extent_start":24128,"extent_end":25278,"ident_utf16":{"start":{"line_number":301,"utf16_col":3},"end":{"line_number":301,"utf16_col":93}},"extent_utf16":{"start":{"line_number":301,"utf16_col":0},"end":{"line_number":315,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":24228,"ident_end":24237,"extent_start":24224,"extent_end":25046,"ident_utf16":{"start":{"line_number":304,"utf16_col":4},"end":{"line_number":304,"utf16_col":13}},"extent_utf16":{"start":{"line_number":304,"utf16_col":0},"end":{"line_number":311,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":25050,"ident_end":25063,"extent_start":25046,"extent_end":25278,"ident_utf16":{"start":{"line_number":311,"utf16_col":4},"end":{"line_number":311,"utf16_col":17}},"extent_utf16":{"start":{"line_number":311,"utf16_col":0},"end":{"line_number":315,"utf16_col":0}}},{"name":"[1.7.1](https://www.github.com/googleapis/python-ndb/compare/v1.7.0...v1.7.1) (2020-11-11)","fully_qualified_name":"[1.7.1](https://www.github.com/googleapis/python-ndb/compare/v1.7.0...v1.7.1) (2020-11-11)","kind":"section_2","ident_start":25281,"ident_end":25371,"extent_start":25278,"extent_end":25704,"ident_utf16":{"start":{"line_number":315,"utf16_col":3},"end":{"line_number":315,"utf16_col":93}},"extent_utf16":{"start":{"line_number":315,"utf16_col":0},"end":{"line_number":322,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":25378,"ident_end":25387,"extent_start":25374,"extent_end":25704,"ident_utf16":{"start":{"line_number":318,"utf16_col":4},"end":{"line_number":318,"utf16_col":13}},"extent_utf16":{"start":{"line_number":318,"utf16_col":0},"end":{"line_number":322,"utf16_col":0}}},{"name":"[1.7.0](https://www.github.com/googleapis/python-ndb/compare/v1.6.1...v1.7.0) (2020-10-22)","fully_qualified_name":"[1.7.0](https://www.github.com/googleapis/python-ndb/compare/v1.6.1...v1.7.0) (2020-10-22)","kind":"section_2","ident_start":25707,"ident_end":25797,"extent_start":25704,"extent_end":26322,"ident_utf16":{"start":{"line_number":322,"utf16_col":3},"end":{"line_number":322,"utf16_col":93}},"extent_utf16":{"start":{"line_number":322,"utf16_col":0},"end":{"line_number":330,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":25804,"ident_end":25812,"extent_start":25800,"extent_end":26322,"ident_utf16":{"start":{"line_number":325,"utf16_col":4},"end":{"line_number":325,"utf16_col":12}},"extent_utf16":{"start":{"line_number":325,"utf16_col":0},"end":{"line_number":330,"utf16_col":0}}},{"name":"[1.6.1](https://www.github.com/googleapis/python-ndb/compare/v1.6.0...v1.6.1) (2020-10-08)","fully_qualified_name":"[1.6.1](https://www.github.com/googleapis/python-ndb/compare/v1.6.0...v1.6.1) (2020-10-08)","kind":"section_2","ident_start":26325,"ident_end":26415,"extent_start":26322,"extent_end":27781,"ident_utf16":{"start":{"line_number":330,"utf16_col":3},"end":{"line_number":330,"utf16_col":93}},"extent_utf16":{"start":{"line_number":330,"utf16_col":0},"end":{"line_number":345,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":26422,"ident_end":26431,"extent_start":26418,"extent_end":27307,"ident_utf16":{"start":{"line_number":333,"utf16_col":4},"end":{"line_number":333,"utf16_col":13}},"extent_utf16":{"start":{"line_number":333,"utf16_col":0},"end":{"line_number":340,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":27311,"ident_end":27324,"extent_start":27307,"extent_end":27781,"ident_utf16":{"start":{"line_number":340,"utf16_col":4},"end":{"line_number":340,"utf16_col":17}},"extent_utf16":{"start":{"line_number":340,"utf16_col":0},"end":{"line_number":345,"utf16_col":0}}},{"name":"[1.6.0](https://www.github.com/googleapis/python-ndb/compare/v1.5.2...v1.6.0) (2020-09-14)","fully_qualified_name":"[1.6.0](https://www.github.com/googleapis/python-ndb/compare/v1.5.2...v1.6.0) (2020-09-14)","kind":"section_2","ident_start":27784,"ident_end":27874,"extent_start":27781,"extent_end":28088,"ident_utf16":{"start":{"line_number":345,"utf16_col":3},"end":{"line_number":345,"utf16_col":93}},"extent_utf16":{"start":{"line_number":345,"utf16_col":0},"end":{"line_number":352,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":27881,"ident_end":27889,"extent_start":27877,"extent_end":28088,"ident_utf16":{"start":{"line_number":348,"utf16_col":4},"end":{"line_number":348,"utf16_col":12}},"extent_utf16":{"start":{"line_number":348,"utf16_col":0},"end":{"line_number":352,"utf16_col":0}}},{"name":"[1.5.2](https://www.github.com/googleapis/python-ndb/compare/v1.5.1...v1.5.2) (2020-09-03)","fully_qualified_name":"[1.5.2](https://www.github.com/googleapis/python-ndb/compare/v1.5.1...v1.5.2) (2020-09-03)","kind":"section_2","ident_start":28091,"ident_end":28181,"extent_start":28088,"extent_end":29678,"ident_utf16":{"start":{"line_number":352,"utf16_col":3},"end":{"line_number":352,"utf16_col":93}},"extent_utf16":{"start":{"line_number":352,"utf16_col":0},"end":{"line_number":367,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":28188,"ident_end":28197,"extent_start":28184,"extent_end":29386,"ident_utf16":{"start":{"line_number":355,"utf16_col":4},"end":{"line_number":355,"utf16_col":13}},"extent_utf16":{"start":{"line_number":355,"utf16_col":0},"end":{"line_number":363,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":29390,"ident_end":29403,"extent_start":29386,"extent_end":29678,"ident_utf16":{"start":{"line_number":363,"utf16_col":4},"end":{"line_number":363,"utf16_col":17}},"extent_utf16":{"start":{"line_number":363,"utf16_col":0},"end":{"line_number":367,"utf16_col":0}}},{"name":"[1.5.1](https://www.github.com/googleapis/python-ndb/compare/v1.5.0...v1.5.1) (2020-08-28)","fully_qualified_name":"[1.5.1](https://www.github.com/googleapis/python-ndb/compare/v1.5.0...v1.5.1) (2020-08-28)","kind":"section_2","ident_start":29681,"ident_end":29771,"extent_start":29678,"extent_end":30679,"ident_utf16":{"start":{"line_number":367,"utf16_col":3},"end":{"line_number":367,"utf16_col":93}},"extent_utf16":{"start":{"line_number":367,"utf16_col":0},"end":{"line_number":376,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":29778,"ident_end":29787,"extent_start":29774,"extent_end":30679,"ident_utf16":{"start":{"line_number":370,"utf16_col":4},"end":{"line_number":370,"utf16_col":13}},"extent_utf16":{"start":{"line_number":370,"utf16_col":0},"end":{"line_number":376,"utf16_col":0}}},{"name":"[1.5.0](https://www.github.com/googleapis/python-ndb/compare/v1.4.2...v1.5.0) (2020-08-12)","fully_qualified_name":"[1.5.0](https://www.github.com/googleapis/python-ndb/compare/v1.4.2...v1.5.0) (2020-08-12)","kind":"section_2","ident_start":30682,"ident_end":30772,"extent_start":30679,"extent_end":31642,"ident_utf16":{"start":{"line_number":376,"utf16_col":3},"end":{"line_number":376,"utf16_col":93}},"extent_utf16":{"start":{"line_number":376,"utf16_col":0},"end":{"line_number":389,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":30779,"ident_end":30787,"extent_start":30775,"extent_end":31037,"ident_utf16":{"start":{"line_number":379,"utf16_col":4},"end":{"line_number":379,"utf16_col":12}},"extent_utf16":{"start":{"line_number":379,"utf16_col":0},"end":{"line_number":384,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":31041,"ident_end":31050,"extent_start":31037,"extent_end":31642,"ident_utf16":{"start":{"line_number":384,"utf16_col":4},"end":{"line_number":384,"utf16_col":13}},"extent_utf16":{"start":{"line_number":384,"utf16_col":0},"end":{"line_number":389,"utf16_col":0}}},{"name":"[1.4.2](https://www.github.com/googleapis/python-ndb/compare/v1.4.1...v1.4.2) (2020-07-30)","fully_qualified_name":"[1.4.2](https://www.github.com/googleapis/python-ndb/compare/v1.4.1...v1.4.2) (2020-07-30)","kind":"section_2","ident_start":31645,"ident_end":31735,"extent_start":31642,"extent_end":32344,"ident_utf16":{"start":{"line_number":389,"utf16_col":3},"end":{"line_number":389,"utf16_col":93}},"extent_utf16":{"start":{"line_number":389,"utf16_col":0},"end":{"line_number":397,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":31742,"ident_end":31751,"extent_start":31738,"extent_end":32344,"ident_utf16":{"start":{"line_number":392,"utf16_col":4},"end":{"line_number":392,"utf16_col":13}},"extent_utf16":{"start":{"line_number":392,"utf16_col":0},"end":{"line_number":397,"utf16_col":0}}},{"name":"[1.4.1](https://www.github.com/googleapis/python-ndb/compare/v1.4.0...v1.4.1) (2020-07-10)","fully_qualified_name":"[1.4.1](https://www.github.com/googleapis/python-ndb/compare/v1.4.0...v1.4.1) (2020-07-10)","kind":"section_2","ident_start":32347,"ident_end":32437,"extent_start":32344,"extent_end":32749,"ident_utf16":{"start":{"line_number":397,"utf16_col":3},"end":{"line_number":397,"utf16_col":93}},"extent_utf16":{"start":{"line_number":397,"utf16_col":0},"end":{"line_number":404,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":32444,"ident_end":32453,"extent_start":32440,"extent_end":32749,"ident_utf16":{"start":{"line_number":400,"utf16_col":4},"end":{"line_number":400,"utf16_col":13}},"extent_utf16":{"start":{"line_number":400,"utf16_col":0},"end":{"line_number":404,"utf16_col":0}}},{"name":"[1.4.0](https://www.github.com/googleapis/python-ndb/compare/v1.3.0...v1.4.0) (2020-07-01)","fully_qualified_name":"[1.4.0](https://www.github.com/googleapis/python-ndb/compare/v1.3.0...v1.4.0) (2020-07-01)","kind":"section_2","ident_start":32752,"ident_end":32842,"extent_start":32749,"extent_end":34281,"ident_utf16":{"start":{"line_number":404,"utf16_col":3},"end":{"line_number":404,"utf16_col":93}},"extent_utf16":{"start":{"line_number":404,"utf16_col":0},"end":{"line_number":419,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":32849,"ident_end":32857,"extent_start":32845,"extent_end":33375,"ident_utf16":{"start":{"line_number":407,"utf16_col":4},"end":{"line_number":407,"utf16_col":12}},"extent_utf16":{"start":{"line_number":407,"utf16_col":0},"end":{"line_number":413,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":33379,"ident_end":33388,"extent_start":33375,"extent_end":34281,"ident_utf16":{"start":{"line_number":413,"utf16_col":4},"end":{"line_number":413,"utf16_col":13}},"extent_utf16":{"start":{"line_number":413,"utf16_col":0},"end":{"line_number":419,"utf16_col":0}}},{"name":"[1.3.0](https://www.github.com/googleapis/python-ndb/compare/v1.2.1...v1.3.0) (2020-06-01)","fully_qualified_name":"[1.3.0](https://www.github.com/googleapis/python-ndb/compare/v1.2.1...v1.3.0) (2020-06-01)","kind":"section_2","ident_start":34284,"ident_end":34374,"extent_start":34281,"extent_end":37155,"ident_utf16":{"start":{"line_number":419,"utf16_col":3},"end":{"line_number":419,"utf16_col":93}},"extent_utf16":{"start":{"line_number":419,"utf16_col":0},"end":{"line_number":438,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":34381,"ident_end":34389,"extent_start":34377,"extent_end":34964,"ident_utf16":{"start":{"line_number":422,"utf16_col":4},"end":{"line_number":422,"utf16_col":12}},"extent_utf16":{"start":{"line_number":422,"utf16_col":0},"end":{"line_number":428,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":34968,"ident_end":34977,"extent_start":34964,"extent_end":37155,"ident_utf16":{"start":{"line_number":428,"utf16_col":4},"end":{"line_number":428,"utf16_col":13}},"extent_utf16":{"start":{"line_number":428,"utf16_col":0},"end":{"line_number":438,"utf16_col":0}}},{"name":"[1.2.1](https://www.github.com/googleapis/python-ndb/compare/v1.2.0...v1.2.1) (2020-05-15)","fully_qualified_name":"[1.2.1](https://www.github.com/googleapis/python-ndb/compare/v1.2.0...v1.2.1) (2020-05-15)","kind":"section_2","ident_start":37158,"ident_end":37248,"extent_start":37155,"extent_end":40791,"ident_utf16":{"start":{"line_number":438,"utf16_col":3},"end":{"line_number":438,"utf16_col":93}},"extent_utf16":{"start":{"line_number":438,"utf16_col":0},"end":{"line_number":460,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":37255,"ident_end":37263,"extent_start":37251,"extent_end":37539,"ident_utf16":{"start":{"line_number":441,"utf16_col":4},"end":{"line_number":441,"utf16_col":12}},"extent_utf16":{"start":{"line_number":441,"utf16_col":0},"end":{"line_number":446,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":37543,"ident_end":37552,"extent_start":37539,"extent_end":40791,"ident_utf16":{"start":{"line_number":446,"utf16_col":4},"end":{"line_number":446,"utf16_col":13}},"extent_utf16":{"start":{"line_number":446,"utf16_col":0},"end":{"line_number":460,"utf16_col":0}}},{"name":"[1.2.0](https://www.github.com/googleapis/python-ndb/compare/v1.1.2...v1.2.0) (2020-04-20)","fully_qualified_name":"[1.2.0](https://www.github.com/googleapis/python-ndb/compare/v1.1.2...v1.2.0) (2020-04-20)","kind":"section_2","ident_start":40794,"ident_end":40884,"extent_start":40791,"extent_end":42921,"ident_utf16":{"start":{"line_number":460,"utf16_col":3},"end":{"line_number":460,"utf16_col":93}},"extent_utf16":{"start":{"line_number":460,"utf16_col":0},"end":{"line_number":477,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":40891,"ident_end":40899,"extent_start":40887,"extent_end":41501,"ident_utf16":{"start":{"line_number":463,"utf16_col":4},"end":{"line_number":463,"utf16_col":12}},"extent_utf16":{"start":{"line_number":463,"utf16_col":0},"end":{"line_number":469,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":41505,"ident_end":41514,"extent_start":41501,"extent_end":42921,"ident_utf16":{"start":{"line_number":469,"utf16_col":4},"end":{"line_number":469,"utf16_col":13}},"extent_utf16":{"start":{"line_number":469,"utf16_col":0},"end":{"line_number":477,"utf16_col":0}}},{"name":"[1.1.2](https://www.github.com/googleapis/python-ndb/compare/v1.1.1...v1.1.2) (2020-03-16)","fully_qualified_name":"[1.1.2](https://www.github.com/googleapis/python-ndb/compare/v1.1.1...v1.1.2) (2020-03-16)","kind":"section_2","ident_start":42924,"ident_end":43014,"extent_start":42921,"extent_end":43624,"ident_utf16":{"start":{"line_number":477,"utf16_col":3},"end":{"line_number":477,"utf16_col":93}},"extent_utf16":{"start":{"line_number":477,"utf16_col":0},"end":{"line_number":485,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":43021,"ident_end":43030,"extent_start":43017,"extent_end":43624,"ident_utf16":{"start":{"line_number":480,"utf16_col":4},"end":{"line_number":480,"utf16_col":13}},"extent_utf16":{"start":{"line_number":480,"utf16_col":0},"end":{"line_number":485,"utf16_col":0}}},{"name":"[1.1.1](https://www.github.com/googleapis/python-ndb/compare/v1.1.0...v1.1.1) (2020-03-05)","fully_qualified_name":"[1.1.1](https://www.github.com/googleapis/python-ndb/compare/v1.1.0...v1.1.1) (2020-03-05)","kind":"section_2","ident_start":43627,"ident_end":43717,"extent_start":43624,"extent_end":44541,"ident_utf16":{"start":{"line_number":485,"utf16_col":3},"end":{"line_number":485,"utf16_col":93}},"extent_utf16":{"start":{"line_number":485,"utf16_col":0},"end":{"line_number":494,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":43724,"ident_end":43733,"extent_start":43720,"extent_end":44541,"ident_utf16":{"start":{"line_number":488,"utf16_col":4},"end":{"line_number":488,"utf16_col":13}},"extent_utf16":{"start":{"line_number":488,"utf16_col":0},"end":{"line_number":494,"utf16_col":0}}},{"name":"[1.1.0](https://www.github.com/googleapis/python-ndb/compare/v1.0.1...v1.1.0) (2020-03-02)","fully_qualified_name":"[1.1.0](https://www.github.com/googleapis/python-ndb/compare/v1.0.1...v1.1.0) (2020-03-02)","kind":"section_2","ident_start":44544,"ident_end":44634,"extent_start":44541,"extent_end":46624,"ident_utf16":{"start":{"line_number":494,"utf16_col":3},"end":{"line_number":494,"utf16_col":93}},"extent_utf16":{"start":{"line_number":494,"utf16_col":0},"end":{"line_number":511,"utf16_col":0}}},{"name":"Features","fully_qualified_name":"Features","kind":"section_3","ident_start":44641,"ident_end":44649,"extent_start":44637,"extent_end":44853,"ident_utf16":{"start":{"line_number":497,"utf16_col":4},"end":{"line_number":497,"utf16_col":12}},"extent_utf16":{"start":{"line_number":497,"utf16_col":0},"end":{"line_number":502,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":44857,"ident_end":44866,"extent_start":44853,"extent_end":46624,"ident_utf16":{"start":{"line_number":502,"utf16_col":4},"end":{"line_number":502,"utf16_col":13}},"extent_utf16":{"start":{"line_number":502,"utf16_col":0},"end":{"line_number":511,"utf16_col":0}}},{"name":"[1.0.1](https://www.github.com/googleapis/python-ndb/compare/v1.0.0...v1.0.1) (2020-02-11)","fully_qualified_name":"[1.0.1](https://www.github.com/googleapis/python-ndb/compare/v1.0.0...v1.0.1) (2020-02-11)","kind":"section_2","ident_start":46627,"ident_end":46717,"extent_start":46624,"extent_end":48869,"ident_utf16":{"start":{"line_number":511,"utf16_col":3},"end":{"line_number":511,"utf16_col":93}},"extent_utf16":{"start":{"line_number":511,"utf16_col":0},"end":{"line_number":525,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":46724,"ident_end":46733,"extent_start":46720,"extent_end":48869,"ident_utf16":{"start":{"line_number":514,"utf16_col":4},"end":{"line_number":514,"utf16_col":13}},"extent_utf16":{"start":{"line_number":514,"utf16_col":0},"end":{"line_number":525,"utf16_col":0}}},{"name":"[1.0.0](https://www.github.com/googleapis/python-ndb/compare/v0.2.2...v1.0.0) (2020-01-30)","fully_qualified_name":"[1.0.0](https://www.github.com/googleapis/python-ndb/compare/v0.2.2...v1.0.0) (2020-01-30)","kind":"section_2","ident_start":48872,"ident_end":48962,"extent_start":48869,"extent_end":50340,"ident_utf16":{"start":{"line_number":525,"utf16_col":3},"end":{"line_number":525,"utf16_col":93}},"extent_utf16":{"start":{"line_number":525,"utf16_col":0},"end":{"line_number":536,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":48969,"ident_end":48978,"extent_start":48965,"extent_end":50340,"ident_utf16":{"start":{"line_number":528,"utf16_col":4},"end":{"line_number":528,"utf16_col":13}},"extent_utf16":{"start":{"line_number":528,"utf16_col":0},"end":{"line_number":536,"utf16_col":0}}},{"name":"[0.2.2](https://www.github.com/googleapis/python-ndb/compare/v0.2.1...v0.2.2) (2020-01-15)","fully_qualified_name":"[0.2.2](https://www.github.com/googleapis/python-ndb/compare/v0.2.1...v0.2.2) (2020-01-15)","kind":"section_2","ident_start":50343,"ident_end":50433,"extent_start":50340,"extent_end":51828,"ident_utf16":{"start":{"line_number":536,"utf16_col":3},"end":{"line_number":536,"utf16_col":93}},"extent_utf16":{"start":{"line_number":536,"utf16_col":0},"end":{"line_number":547,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":50440,"ident_end":50449,"extent_start":50436,"extent_end":51828,"ident_utf16":{"start":{"line_number":539,"utf16_col":4},"end":{"line_number":539,"utf16_col":13}},"extent_utf16":{"start":{"line_number":539,"utf16_col":0},"end":{"line_number":547,"utf16_col":0}}},{"name":"[0.2.1](https://www.github.com/googleapis/python-ndb/compare/v0.2.0...v0.2.1) (2019-12-10)","fully_qualified_name":"[0.2.1](https://www.github.com/googleapis/python-ndb/compare/v0.2.0...v0.2.1) (2019-12-10)","kind":"section_2","ident_start":51831,"ident_end":51921,"extent_start":51828,"extent_end":53030,"ident_utf16":{"start":{"line_number":547,"utf16_col":3},"end":{"line_number":547,"utf16_col":93}},"extent_utf16":{"start":{"line_number":547,"utf16_col":0},"end":{"line_number":557,"utf16_col":0}}},{"name":"Bug Fixes","fully_qualified_name":"Bug Fixes","kind":"section_3","ident_start":51928,"ident_end":51937,"extent_start":51924,"extent_end":53030,"ident_utf16":{"start":{"line_number":550,"utf16_col":4},"end":{"line_number":550,"utf16_col":13}},"extent_utf16":{"start":{"line_number":550,"utf16_col":0},"end":{"line_number":557,"utf16_col":0}}},{"name":"0.2.0","fully_qualified_name":"0.2.0","kind":"section_2","ident_start":53033,"ident_end":53038,"extent_start":53030,"extent_end":55075,"ident_utf16":{"start":{"line_number":557,"utf16_col":3},"end":{"line_number":557,"utf16_col":8}},"extent_utf16":{"start":{"line_number":557,"utf16_col":0},"end":{"line_number":589,"utf16_col":0}}},{"name":"Implementation Changes","fully_qualified_name":"Implementation Changes","kind":"section_3","ident_start":53067,"ident_end":53089,"extent_start":53063,"extent_end":53678,"ident_utf16":{"start":{"line_number":562,"utf16_col":4},"end":{"line_number":562,"utf16_col":26}},"extent_utf16":{"start":{"line_number":562,"utf16_col":0},"end":{"line_number":570,"utf16_col":0}}},{"name":"New Features","fully_qualified_name":"New Features","kind":"section_3","ident_start":53682,"ident_end":53694,"extent_start":53678,"extent_end":54353,"ident_utf16":{"start":{"line_number":570,"utf16_col":4},"end":{"line_number":570,"utf16_col":16}},"extent_utf16":{"start":{"line_number":570,"utf16_col":0},"end":{"line_number":578,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":54357,"ident_end":54370,"extent_start":54353,"extent_end":54767,"ident_utf16":{"start":{"line_number":578,"utf16_col":4},"end":{"line_number":578,"utf16_col":17}},"extent_utf16":{"start":{"line_number":578,"utf16_col":0},"end":{"line_number":584,"utf16_col":0}}},{"name":"Internal / Testing Changes","fully_qualified_name":"Internal / Testing Changes","kind":"section_3","ident_start":54771,"ident_end":54797,"extent_start":54767,"extent_end":55075,"ident_utf16":{"start":{"line_number":584,"utf16_col":4},"end":{"line_number":584,"utf16_col":30}},"extent_utf16":{"start":{"line_number":584,"utf16_col":0},"end":{"line_number":589,"utf16_col":0}}},{"name":"0.1.0","fully_qualified_name":"0.1.0","kind":"section_2","ident_start":55078,"ident_end":55083,"extent_start":55075,"extent_end":59717,"ident_utf16":{"start":{"line_number":589,"utf16_col":3},"end":{"line_number":589,"utf16_col":8}},"extent_utf16":{"start":{"line_number":589,"utf16_col":0},"end":{"line_number":644,"utf16_col":0}}},{"name":"Deprecations","fully_qualified_name":"Deprecations","kind":"section_3","ident_start":55111,"ident_end":55123,"extent_start":55107,"extent_end":55304,"ident_utf16":{"start":{"line_number":593,"utf16_col":4},"end":{"line_number":593,"utf16_col":16}},"extent_utf16":{"start":{"line_number":593,"utf16_col":0},"end":{"line_number":596,"utf16_col":0}}},{"name":"Implementation Changes","fully_qualified_name":"Implementation Changes","kind":"section_3","ident_start":55308,"ident_end":55330,"extent_start":55304,"extent_end":57012,"ident_utf16":{"start":{"line_number":596,"utf16_col":4},"end":{"line_number":596,"utf16_col":26}},"extent_utf16":{"start":{"line_number":596,"utf16_col":0},"end":{"line_number":613,"utf16_col":0}}},{"name":"New Features","fully_qualified_name":"New Features","kind":"section_3","ident_start":57016,"ident_end":57028,"extent_start":57012,"extent_end":57913,"ident_utf16":{"start":{"line_number":613,"utf16_col":4},"end":{"line_number":613,"utf16_col":16}},"extent_utf16":{"start":{"line_number":613,"utf16_col":0},"end":{"line_number":624,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":57917,"ident_end":57930,"extent_start":57913,"extent_end":58638,"ident_utf16":{"start":{"line_number":624,"utf16_col":4},"end":{"line_number":624,"utf16_col":17}},"extent_utf16":{"start":{"line_number":624,"utf16_col":0},"end":{"line_number":633,"utf16_col":0}}},{"name":"Internal / Testing Changes","fully_qualified_name":"Internal / Testing Changes","kind":"section_3","ident_start":58642,"ident_end":58668,"extent_start":58638,"extent_end":59717,"ident_utf16":{"start":{"line_number":633,"utf16_col":4},"end":{"line_number":633,"utf16_col":30}},"extent_utf16":{"start":{"line_number":633,"utf16_col":0},"end":{"line_number":644,"utf16_col":0}}},{"name":"0.0.1","fully_qualified_name":"0.0.1","kind":"section_2","ident_start":59720,"ident_end":59725,"extent_start":59717,"extent_end":61006,"ident_utf16":{"start":{"line_number":644,"utf16_col":3},"end":{"line_number":644,"utf16_col":8}},"extent_utf16":{"start":{"line_number":644,"utf16_col":0},"end":{"line_number":669,"utf16_col":0}}},{"name":"Implementation Changes","fully_qualified_name":"Implementation Changes","kind":"section_3","ident_start":59753,"ident_end":59775,"extent_start":59749,"extent_end":59965,"ident_utf16":{"start":{"line_number":648,"utf16_col":4},"end":{"line_number":648,"utf16_col":26}},"extent_utf16":{"start":{"line_number":648,"utf16_col":0},"end":{"line_number":652,"utf16_col":0}}},{"name":"New Features","fully_qualified_name":"New Features","kind":"section_3","ident_start":59969,"ident_end":59981,"extent_start":59965,"extent_end":60876,"ident_utf16":{"start":{"line_number":652,"utf16_col":4},"end":{"line_number":652,"utf16_col":16}},"extent_utf16":{"start":{"line_number":652,"utf16_col":0},"end":{"line_number":666,"utf16_col":0}}},{"name":"Documentation","fully_qualified_name":"Documentation","kind":"section_3","ident_start":60880,"ident_end":60893,"extent_start":60876,"extent_end":61006,"ident_utf16":{"start":{"line_number":666,"utf16_col":4},"end":{"line_number":666,"utf16_col":17}},"extent_utf16":{"start":{"line_number":666,"utf16_col":0},"end":{"line_number":669,"utf16_col":0}}},{"name":"0.0.1dev1","fully_qualified_name":"0.0.1dev1","kind":"section_2","ident_start":61009,"ident_end":61018,"extent_start":61006,"extent_end":61071,"ident_utf16":{"start":{"line_number":669,"utf16_col":3},"end":{"line_number":669,"utf16_col":12}},"extent_utf16":{"start":{"line_number":669,"utf16_col":0},"end":{"line_number":672,"utf16_col":0}}}]}},"codeViewLayoutRoute":{"repo":{"id":171752887,"defaultBranch":"main","name":"python-ndb","ownerLogin":"googleapis","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-02-20T21:35:11.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/16785467?v=4","public":true,"private":false,"isOrgOwned":true,"isArchived":true},"currentUser":null,"uploadToken":"MKbUh0SxEO0X1eL37whdiLpCeI8YhQu14T8NB49CnNniA7AWyPjg16bqRAzB-m_bQqaaeJHS1OMxAG3oXjD5Rw","allShortcutsEnabled":false,"treeExpanded":true,"path":"CHANGELOG.md","symbolsExpanded":false,"refInfo":{"name":"main","listCacheKey":"v0:1772818921.0","canEdit":false,"currentOid":"55651c4d89678b5069fbc67628bd658244b7f6f5"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"codeViewFileTreeLayoutRoute":{"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":".kokoro","path":".kokoro","contentType":"directory"},{"name":".librarian","path":".librarian","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"google","path":"google","contentType":"directory"},{"name":"testing","path":"testing","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".coveragerc","path":".coveragerc","contentType":"file"},{"name":".flake8","path":".flake8","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".repo-metadata.json","path":".repo-metadata.json","contentType":"file"},{"name":".trampolinerc","path":".trampolinerc","contentType":"file"},{"name":"AUTHORS","path":"AUTHORS","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"CODE_OF_CONDUCT.md","path":"CODE_OF_CONDUCT.md","contentType":"file"},{"name":"CONTRIBUTING.rst","path":"CONTRIBUTING.rst","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"MIGRATION_NOTES.md","path":"MIGRATION_NOTES.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"SECURITY.md","path":"SECURITY.md","contentType":"file"},{"name":"noxfile.py","path":"noxfile.py","contentType":"file"},{"name":"owlbot.py","path":"owlbot.py","contentType":"file"},{"name":"renovate.json","path":"renovate.json","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"}],"totalCount":24}},"fileTreeProcessingTime":46.922354,"foldersToFetch":[]},"codeViewBlobLayoutRoute":{"codeLineWrapEnabled":false,"refInfo":{"name":"main","listCacheKey":"v0:1772818921.0","canEdit":false,"refType":"branch","currentOid":"55651c4d89678b5069fbc67628bd658244b7f6f5","canEditOnDefaultBranch":false,"fileExistsOnDefault":true},"path":"CHANGELOG.md","blob":{"copilotSWEAgentEnabled":false,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/googleapis/python-ndb/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"CHANGELOG.md","displayUrl":"https://github.com/googleapis/python-ndb/blob/main/CHANGELOG.md?raw=true","headerInfo":{"blobSize":"59.6 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"eeb8d99","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-ndb%2Fblob%2Fmain%2FCHANGELOG.md","isCSV":false,"isRichtext":true,"lineInfo":{"truncatedLoc":"672","truncatedSloc":"397"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"isIssueTemplate":false,"isDiscussionTemplate":false,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/googleapis/python-ndb/blob/main/CHANGELOG.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/googleapis/python-ndb/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/googleapis/python-ndb/raw/refs/heads/main/CHANGELOG.md","renderImageOrRaw":false,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null},"copilotInfo":null,"copilotAccessAllowed":false,"copilotSpacesEnabled":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true},"codeViewBlobLayoutRoute.StyledBlob":{"rawLines":["# Changelog","","[PyPI History][1]","","[1]: https://pypi.org/project/google-cloud-ndb/#history","","## [2.4.0](https://github.com/googleapis/google-cloud-python/compare/google-cloud-ndb-v2.3.4...google-cloud-ndb-v2.4.0) (2025-12-15)","","","### Features","","* Add support for Python 3.14 (#1028) ([947ff9b73c516f18b0411b828d45eb4bd8b95d39](https://github.com/googleapis/google-cloud-python/commit/947ff9b73c516f18b0411b828d45eb4bd8b95d39))","","## [2.3.4](https://github.com/googleapis/python-ndb/compare/v2.3.3...v2.3.4) (2025-06-11)","","","### Bug Fixes","","* Allow protobuf 6.x, allow redis 6.x ([#1013](https://github.com/googleapis/python-ndb/issues/1013)) ([b3684fe](https://github.com/googleapis/python-ndb/commit/b3684fe46c13b5d39deccc456f544b0f6f473d91))","","## [2.3.3](https://github.com/googleapis/python-ndb/compare/v2.3.2...v2.3.3) (2025-05-09)","","","### Bug Fixes","","* Support sub-meanings for datastore v2.20.3 ([#1014](https://github.com/googleapis/python-ndb/issues/1014)) ([88f14fa](https://github.com/googleapis/python-ndb/commit/88f14fa462b7f7caf72688374682bb1b7a2d933c))","","## [2.3.2](https://github.com/googleapis/python-ndb/compare/v2.3.1...v2.3.2) (2024-07-15)","","","### Bug Fixes","","* Allow Protobuf 5.x ([#991](https://github.com/googleapis/python-ndb/issues/991)) ([5812a3c](https://github.com/googleapis/python-ndb/commit/5812a3c2833ef9edda1726645e32789752474bd6))","","## [2.3.1](https://github.com/googleapis/python-ndb/compare/v2.3.0...v2.3.1) (2024-03-16)","","","### Bug Fixes","","* **grpc:** Fix large payload handling when using the emulator. ([#975](https://github.com/googleapis/python-ndb/issues/975)) ([d9162ae](https://github.com/googleapis/python-ndb/commit/d9162aee709062683bf5f9f01208bd40f46d490a))","* Remove uses of six. [#913](https://github.com/googleapis/python-ndb/issues/913) ([#958](https://github.com/googleapis/python-ndb/issues/958)) ([e17129a](https://github.com/googleapis/python-ndb/commit/e17129a2114c3f5d45b99cc9a4911b586eb3fafa))","* Show a non-None error for core_exception.Unknown errors. ([#968](https://github.com/googleapis/python-ndb/issues/968)) ([66e61cc](https://github.com/googleapis/python-ndb/commit/66e61cc578335509d480650906528fa390f44c11))","","","### Documentation","","* Document how to run system tests against the emulator. ([#963](https://github.com/googleapis/python-ndb/issues/963)) ([47db5b9](https://github.com/googleapis/python-ndb/commit/47db5b9f6ee1fc7c01ad86d476cd8e066fb5cffb))","* Note to use functools.wrap instead of utils.wrapping. ([#966](https://github.com/googleapis/python-ndb/issues/966)) ([5e9f3d6](https://github.com/googleapis/python-ndb/commit/5e9f3d6977677c20b3447f07bf8bcf4553aac076))","* Tell users of utils.wrapping to use functools.wraps ([#967](https://github.com/googleapis/python-ndb/issues/967)) ([042645b](https://github.com/googleapis/python-ndb/commit/042645b52608a1c11645dd4b014a90040468b113))","","## [2.3.0](https://github.com/googleapis/python-ndb/compare/v2.2.2...v2.3.0) (2024-03-01)","","","### Features","","* Add field information when raising validation errors. ([#956](https://github.com/googleapis/python-ndb/issues/956)) ([17caf0b](https://github.com/googleapis/python-ndb/commit/17caf0b5f7d0c4d18522f676c8af990b8ff8462d))","* Add Python 3.12 ([#949](https://github.com/googleapis/python-ndb/issues/949)) ([b5c8477](https://github.com/googleapis/python-ndb/commit/b5c847783b80071c2dd9e9a3dbf899230c99e64a))","* Add support for google.cloud.ndb.__version__ ([#929](https://github.com/googleapis/python-ndb/issues/929)) ([42b3f01](https://github.com/googleapis/python-ndb/commit/42b3f0137caed25ac3242435b571155d2d84c78e))","* Add support for server side NOT_IN filter. ([#957](https://github.com/googleapis/python-ndb/issues/957)) ([f0b0724](https://github.com/googleapis/python-ndb/commit/f0b0724d7e364cc3f3574e77076465657089b09c))","* Allow queries using server side IN. ([#954](https://github.com/googleapis/python-ndb/issues/954)) ([2646cef](https://github.com/googleapis/python-ndb/commit/2646cef3e2687461174a11c45f29de7b84d1fcdb))","* Introduce compatibility with native namespace packages ([#933](https://github.com/googleapis/python-ndb/issues/933)) ([ccae387](https://github.com/googleapis/python-ndb/commit/ccae387720a28db2686e69dfe23a2599fc4908f0))","* Use server side != for queries. ([#950](https://github.com/googleapis/python-ndb/issues/950)) ([106772f](https://github.com/googleapis/python-ndb/commit/106772f031f6c37500a0d463698e59008f9bf19a))","","","### Bug Fixes","","* Compressed repeated to uncompressed property ([#772](https://github.com/googleapis/python-ndb/issues/772)) ([dab9edf](https://github.com/googleapis/python-ndb/commit/dab9edf0fc161051eb13c296cbe973b3a16b502d))","* Repeated structured property containing blob property with legacy_data ([#817](https://github.com/googleapis/python-ndb/issues/817)) ([#946](https://github.com/googleapis/python-ndb/issues/946)) ([455f860](https://github.com/googleapis/python-ndb/commit/455f860343ff1b71232dad98cf91415492a899ca))","","","### Documentation","","* **__init__:** Note that Firestore in Datastore Mode is supported ([#919](https://github.com/googleapis/python-ndb/issues/919)) ([0fa75e7](https://github.com/googleapis/python-ndb/commit/0fa75e71dfc6d56d2c0eaf214a48774b99bb959f))","* Correct read_consistency docs. ([#948](https://github.com/googleapis/python-ndb/issues/948)) ([7e8481d](https://github.com/googleapis/python-ndb/commit/7e8481db84a6d0b96cf09c38e90f47d6b7847a0b))","* Fix a mistaken ID description ([#943](https://github.com/googleapis/python-ndb/issues/943)) ([5103813](https://github.com/googleapis/python-ndb/commit/51038139e45807b3a14346ded702fbe202dcfdf2))","* Show how to use named databases ([#932](https://github.com/googleapis/python-ndb/issues/932)) ([182fe4e](https://github.com/googleapis/python-ndb/commit/182fe4e2d295768aaf016f94cb43b6b1e5572ebd))","","## [2.2.2](https://github.com/googleapis/python-ndb/compare/v2.2.1...v2.2.2) (2023-09-19)","","","### Documentation","","* **query:** Document deprecation of Query.default_options ([#915](https://github.com/googleapis/python-ndb/issues/915)) ([a656719](https://github.com/googleapis/python-ndb/commit/a656719d8a4f20a8b8dc564a1e3837a2cfb037c4)), closes [#880](https://github.com/googleapis/python-ndb/issues/880)","","## [2.2.1](https://github.com/googleapis/python-ndb/compare/v2.2.0...v2.2.1) (2023-09-15)","","","### Bug Fixes","","* **deps:** Add missing six dependency ([#912](https://github.com/googleapis/python-ndb/issues/912)) ([3b1ffb7](https://github.com/googleapis/python-ndb/commit/3b1ffb7e5cabdadfe2a4be6802adef774eec5ef8))","","","### Documentation","","* Mark database argument for get_by_id and its async counterpart as ignored ([#905](https://github.com/googleapis/python-ndb/issues/905)) ([b0f4310](https://github.com/googleapis/python-ndb/commit/b0f431048b7b2ebb20e4255340290c7687e27425))","","## [2.2.0](https://github.com/googleapis/python-ndb/compare/v2.1.1...v2.2.0) (2023-07-26)","","","### Features","","* Named db support ([#882](https://github.com/googleapis/python-ndb/issues/882)) ([f5713b0](https://github.com/googleapis/python-ndb/commit/f5713b0e36e54ef69e9fa7e99975f32870832f65))","","","### Documentation","","* **query:** Fix Py2-style print statements ([#878](https://github.com/googleapis/python-ndb/issues/878)) ([a3a181a](https://github.com/googleapis/python-ndb/commit/a3a181a427cc292882691d963b30bc78c05c6592))","","## [2.1.1](https://github.com/googleapis/python-ndb/compare/v2.1.0...v2.1.1) (2023-02-28)","","","### Bug Fixes","","* Query options were not respecting use_cache ([#873](https://github.com/googleapis/python-ndb/issues/873)) ([802d88d](https://github.com/googleapis/python-ndb/commit/802d88d108969cba02437f55e5858556221930f3)), closes [#752](https://github.com/googleapis/python-ndb/issues/752)","","","### Documentation","","* Note that we support Python 3.11 in CONTRIBUTING file ([#872](https://github.com/googleapis/python-ndb/issues/872)) ([982ee5f](https://github.com/googleapis/python-ndb/commit/982ee5f9e768c6f7f5ef19bf6fe9e646e4e08e1f))","* Use cached versions of Cloud objects.inv files ([#863](https://github.com/googleapis/python-ndb/issues/863)) ([4471e2f](https://github.com/googleapis/python-ndb/commit/4471e2f11757be280266779544c59c90222b8184)), closes [#862](https://github.com/googleapis/python-ndb/issues/862)","","## [2.1.0](https://github.com/googleapis/python-ndb/compare/v2.0.0...v2.1.0) (2022-12-15)","","","### Features","","* Support client_options for clients ([#815](https://github.com/googleapis/python-ndb/issues/815)) ([6f94f40](https://github.com/googleapis/python-ndb/commit/6f94f40dfcd6f10e3cec979e4eb2b83408c66a30))","","","### Bug Fixes","","* **zlib:** Accomodate different Zlib compression levels ([#852](https://github.com/googleapis/python-ndb/issues/852)) ([c1ab83b](https://github.com/googleapis/python-ndb/commit/c1ab83b9581b3d4d10dc7d2508b1c93b14e3c31a))","","## [2.0.0](https://github.com/googleapis/python-ndb/compare/v1.12.0...v2.0.0) (2022-12-06)","","","### ⚠ BREAKING CHANGES","","* **dependencies:** Upgrade to google-cloud-datastore \u003e= 2.7.2","","### Features","","* **dependencies:** Upgrade to google-cloud-datastore \u0026gt;= 2.7.2 ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","","","### Bug Fixes","","* Correct access to SerializeToString, CopyFrom, and MergeFromString ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","* Fix enum namespaces ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","* Update API capitalization/casing ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","* Update datastore stub creation ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","* Update module imports ([12bbcb5](https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a))","","## [1.12.0](https://github.com/googleapis/python-ndb/compare/v1.11.2...v1.12.0) (2022-11-29)","","","### Bug Fixes","","* Drop Python 2 support ([90efd77](https://github.com/googleapis/python-ndb/commit/90efd77633c97f530088dc3f079547ef4eefd796))","* Drop Python 3.6 support ([#829](https://github.com/googleapis/python-ndb/issues/829)) ([b110199](https://github.com/googleapis/python-ndb/commit/b1101994a34f70804027ea0c8a1b9f276d260756))","* **model:** Ensure repeated props have same kind when converting from ds ([#824](https://github.com/googleapis/python-ndb/issues/824)) ([29f5a85](https://github.com/googleapis/python-ndb/commit/29f5a853174857545e225fe2f0c682dfa0bc3884))","","","### Documentation","","* Add note in Django middleware documentation that it is unimplemented ([#805](https://github.com/googleapis/python-ndb/issues/805)) ([aa7621d](https://github.com/googleapis/python-ndb/commit/aa7621dba3b5c32141cdcb1d07829a217bb8b0bd))","* Add note that ProtoRPC message classes are unimplemented ([#819](https://github.com/googleapis/python-ndb/issues/819)) ([ae813e9](https://github.com/googleapis/python-ndb/commit/ae813e9995d103a45a0c7bc6b4c7bdc148c19c29))","* **context:** Note that several methods are no longer implemented. ([#821](https://github.com/googleapis/python-ndb/issues/821)) ([34c2c38](https://github.com/googleapis/python-ndb/commit/34c2c389d02f4692840631d34b6249b88867d725))","* **CONTRIBUTING:** Note the need for Redis/Memcached env vars in tests ([#838](https://github.com/googleapis/python-ndb/issues/838)) ([19f8415](https://github.com/googleapis/python-ndb/commit/19f84150ab06ae71e25ee48ba7f7285eb0402738)), closes [#836](https://github.com/googleapis/python-ndb/issues/836)","* Fix bad import path in migration guide ([#827](https://github.com/googleapis/python-ndb/issues/827)) ([7b44961](https://github.com/googleapis/python-ndb/commit/7b449615629b5a08836ee17a8ab34eb8efbaed21))","* Fix typo in begin_transaction docstring ([#822](https://github.com/googleapis/python-ndb/issues/822)) ([7fd3ed3](https://github.com/googleapis/python-ndb/commit/7fd3ed315d39a9a50746b00898b22edd3f7d1d0c))","* **README:** Syncronize supported version text with python-datastore ([#837](https://github.com/googleapis/python-ndb/issues/837)) ([316f959](https://github.com/googleapis/python-ndb/commit/316f95913f2dca12f314e429bbe8bd2582bc1c0f))","* **tasklets:** Fix Py2-style print statement ([#840](https://github.com/googleapis/python-ndb/issues/840)) ([0ebfaed](https://github.com/googleapis/python-ndb/commit/0ebfaedc48911b57d0cb23584a2a84c31a92d06a))","","## [1.11.2](https://github.com/googleapis/python-ndb/compare/v1.11.1...v1.11.2) (2022-06-03)","","","### Documentation","","* fix changelog header to consistent size ([#773](https://github.com/googleapis/python-ndb/issues/773)) ([7bb4e5a](https://github.com/googleapis/python-ndb/commit/7bb4e5a7bf11061a546f21e6f57cf2937f7a3a9d))","","## [1.11.1](https://www.github.com/googleapis/python-ndb/compare/v1.11.0...v1.11.1) (2021-11-03)","","","### Bug Fixes","","* increase cache lock expiration time ([#740](https://www.github.com/googleapis/python-ndb/issues/740)) ([2634d01](https://www.github.com/googleapis/python-ndb/commit/2634d01ac9d4a73057d5e16cf476c5ecfc8e7fcf)), closes [#728](https://www.github.com/googleapis/python-ndb/issues/728)","","## [1.11.0](https://www.github.com/googleapis/python-ndb/compare/v1.10.5...v1.11.0) (2021-10-28)","","","### Features","","* add support for python 3.10 ([#735](https://www.github.com/googleapis/python-ndb/issues/735)) ([58620c1](https://www.github.com/googleapis/python-ndb/commit/58620c1b17e3a4b3608614bea620e93f39e1bd3a))","","## [1.10.5](https://www.github.com/googleapis/python-ndb/compare/v1.10.4...v1.10.5) (2021-10-08)","","","### Bug Fixes","","* correct regression in `Model.get_or_insert` ([#731](https://www.github.com/googleapis/python-ndb/issues/731)) ([921ec69](https://www.github.com/googleapis/python-ndb/commit/921ec695e246e548f207b0c6aded7296e4b3b263)), closes [#729](https://www.github.com/googleapis/python-ndb/issues/729)","","## [1.10.4](https://www.github.com/googleapis/python-ndb/compare/v1.10.3...v1.10.4) (2021-09-28)","","","### Bug Fixes","","* pin grpcio / googleapis-common-protos under Python2 ([#725](https://www.github.com/googleapis/python-ndb/issues/725)) ([ccc82e4](https://www.github.com/googleapis/python-ndb/commit/ccc82e42fe2bbb285779a81cff03866facfad667))","","## [1.10.3](https://www.github.com/googleapis/python-ndb/compare/v1.10.2...v1.10.3) (2021-09-07)","","","### Bug Fixes","","* use thread-safe iterator to generate context ids ([#716](https://www.github.com/googleapis/python-ndb/issues/716)) ([92ec8ac](https://www.github.com/googleapis/python-ndb/commit/92ec8ac7de8cd0f50d6104b9e514b4e933cfbb13)), closes [#715](https://www.github.com/googleapis/python-ndb/issues/715)","","## [1.10.2](https://www.github.com/googleapis/python-ndb/compare/v1.10.1...v1.10.2) (2021-08-31)","","","### Bug Fixes","","* **deps:** add pytz as an explicit dependency ([#707](https://www.github.com/googleapis/python-ndb/issues/707)) ([6b48548](https://www.github.com/googleapis/python-ndb/commit/6b48548a1ea4b0c125314f907c25b47992ee6556))","","## [1.10.1](https://www.github.com/googleapis/python-ndb/compare/v1.10.0...v1.10.1) (2021-08-11)","","","### Bug Fixes","","* add rpc request object to debug logging ([#696](https://www.github.com/googleapis/python-ndb/issues/696)) ([45e590a](https://www.github.com/googleapis/python-ndb/commit/45e590a0903e6690a516a1eb35002664eebf540d)), closes [#695](https://www.github.com/googleapis/python-ndb/issues/695)","* allow for legacy repeated structured properties with empty values ([#702](https://www.github.com/googleapis/python-ndb/issues/702)) ([60c293d](https://www.github.com/googleapis/python-ndb/commit/60c293d039721f7e842ac8973a743642e182e4a5)), closes [#694](https://www.github.com/googleapis/python-ndb/issues/694)","* fix bug with concurrent writes to global cache ([#705](https://www.github.com/googleapis/python-ndb/issues/705)) ([bb7cadc](https://www.github.com/googleapis/python-ndb/commit/bb7cadc45df92757b0b2d49c8914a10869d64965)), closes [#692](https://www.github.com/googleapis/python-ndb/issues/692)","","## [1.10.0](https://www.github.com/googleapis/python-ndb/compare/v1.9.0...v1.10.0) (2021-07-20)","","","### Features","","* add 'python_requires' metadata to setup ([#681](https://www.github.com/googleapis/python-ndb/issues/681)) ([e9a09d3](https://www.github.com/googleapis/python-ndb/commit/e9a09d3f0facd29836ccce078575f12e102462c9))","","","### Bug Fixes","","* fix bug with repeated structured properties with Expando values ([#671](https://www.github.com/googleapis/python-ndb/issues/671)) ([882dff0](https://www.github.com/googleapis/python-ndb/commit/882dff0517be9ddad5814317853ce87bf99d5db0)), closes [#669](https://www.github.com/googleapis/python-ndb/issues/669)","* properly handle legacy structured properties in Expando instances ([#676](https://www.github.com/googleapis/python-ndb/issues/676)) ([70710c8](https://www.github.com/googleapis/python-ndb/commit/70710c83c5ace83504167801da990bc81cb43c89)), closes [#673](https://www.github.com/googleapis/python-ndb/issues/673)","* refactor global cache to address concurrency and fault tolerance issues ([#667](https://www.github.com/googleapis/python-ndb/issues/667)) ([5e2c591](https://www.github.com/googleapis/python-ndb/commit/5e2c591cbd89d8783527252d7f771fba91792602))","","## [1.9.0](https://www.github.com/googleapis/python-ndb/compare/v1.8.0...v1.9.0) (2021-06-07)","","","### Features","","* don't flush entire global cache on transient errors ([#654](https://www.github.com/googleapis/python-ndb/issues/654)) ([cbf2d7d](https://www.github.com/googleapis/python-ndb/commit/cbf2d7de3d532ce08bd0d25fa18b5226afd216b9))","","","### Bug Fixes","","* correct inconsistent behavior with regards to namespaces ([#662](https://www.github.com/googleapis/python-ndb/issues/662)) ([cf21a28](https://www.github.com/googleapis/python-ndb/commit/cf21a285e784019f9ba0f2a89a7acc4105fdcd2a)), closes [#661](https://www.github.com/googleapis/python-ndb/issues/661)","* correctly decode falsy values in legacy protocol buffers ([#628](https://www.github.com/googleapis/python-ndb/issues/628)) ([69a9f63](https://www.github.com/googleapis/python-ndb/commit/69a9f63be89ca50bbf0a42d0565a9f1fdcf6d143)), closes [#625](https://www.github.com/googleapis/python-ndb/issues/625)","* defer clearing global cache when in transaction ([#660](https://www.github.com/googleapis/python-ndb/issues/660)) ([73020ed](https://www.github.com/googleapis/python-ndb/commit/73020ed8f8eb1430f87be4b5680690d9e373c846))","* detect cache write failure for `MemcacheCache` ([#665](https://www.github.com/googleapis/python-ndb/issues/665)) ([5d7f163](https://www.github.com/googleapis/python-ndb/commit/5d7f163988c6e8c43579aae616d275db4ca4ff45)), closes [#656](https://www.github.com/googleapis/python-ndb/issues/656)","* do not set read_consistency for queries. ([#664](https://www.github.com/googleapis/python-ndb/issues/664)) ([36a5b55](https://www.github.com/googleapis/python-ndb/commit/36a5b55b1b21d7333923edd4a42d1a32fd453dfa)), closes [#666](https://www.github.com/googleapis/python-ndb/issues/666)","* limit memcache keys to 250 bytes ([#663](https://www.github.com/googleapis/python-ndb/issues/663)) ([7dc11df](https://www.github.com/googleapis/python-ndb/commit/7dc11df00fc15392fde61e828e1445eb9e66a1ac)), closes [#619](https://www.github.com/googleapis/python-ndb/issues/619)","* properly handle error when clearing cache ([#636](https://www.github.com/googleapis/python-ndb/issues/636)) ([d0ffcf3](https://www.github.com/googleapis/python-ndb/commit/d0ffcf3517fe357d6689943265b829258c397d93)), closes [#633](https://www.github.com/googleapis/python-ndb/issues/633)","* retry connection errors with memcache ([#645](https://www.github.com/googleapis/python-ndb/issues/645)) ([06b466a](https://www.github.com/googleapis/python-ndb/commit/06b466a8421ff7a5586164bf4deb43d6bcbf0ef4)), closes [#620](https://www.github.com/googleapis/python-ndb/issues/620)","* support ordering by key for multi queries ([#630](https://www.github.com/googleapis/python-ndb/issues/630)) ([508d8cb](https://www.github.com/googleapis/python-ndb/commit/508d8cb8c65afe5e885c1fdba4dce933d52cfd4b)), closes [#629](https://www.github.com/googleapis/python-ndb/issues/629)","","## [1.8.0](https://www.github.com/googleapis/python-ndb/compare/v1.7.3...v1.8.0) (2021-04-06)","","","### Features","","* retry global cache operations on transient errors ([#603](https://www.github.com/googleapis/python-ndb/issues/603)) ([5d6b650](https://www.github.com/googleapis/python-ndb/commit/5d6b6503ce40ba0d36ea79a461c2c95897235734)), closes [#601](https://www.github.com/googleapis/python-ndb/issues/601)","","","### Bug Fixes","","* don't return `None` for entities found in queries ([#612](https://www.github.com/googleapis/python-ndb/issues/612)) ([9e5e255](https://www.github.com/googleapis/python-ndb/commit/9e5e255c14716b3046a9dc70bb8a4596beec1562)), closes [#586](https://www.github.com/googleapis/python-ndb/issues/586)","* fix bug with compressed blob property ([#615](https://www.github.com/googleapis/python-ndb/issues/615)) ([d305f9f](https://www.github.com/googleapis/python-ndb/commit/d305f9fd2b1cfe8e7d709849e392402f4ae059ac)), closes [#602](https://www.github.com/googleapis/python-ndb/issues/602)","* fix failing unit test ([#607](https://www.github.com/googleapis/python-ndb/issues/607)) ([5d3927e](https://www.github.com/googleapis/python-ndb/commit/5d3927e0b0a6d6a447585d2cc90077de26f24c5c)), closes [#606](https://www.github.com/googleapis/python-ndb/issues/606)","* handle unpickling between GAE NDB (2.7) to Cloud NDB (3) ([#596](https://www.github.com/googleapis/python-ndb/issues/596)) ([5be4225](https://www.github.com/googleapis/python-ndb/commit/5be4225f20b9216b49f953c464b8b8ef9683d8bf))","* mock call to `tasklets.sleep` in unit test ([#609](https://www.github.com/googleapis/python-ndb/issues/609)) ([00e23f3](https://www.github.com/googleapis/python-ndb/commit/00e23f3f31fb531b402f087e29b539a7af9ac79f)), closes [#608](https://www.github.com/googleapis/python-ndb/issues/608)","* prevent mismatch error when using default namespace on ancestor queries ([#614](https://www.github.com/googleapis/python-ndb/issues/614)) ([ae67f04](https://www.github.com/googleapis/python-ndb/commit/ae67f04db12c65ecca9d6145f113729072b952f3))","* reimplement `_clone_properties` ([#610](https://www.github.com/googleapis/python-ndb/issues/610)) ([e23f42b](https://www.github.com/googleapis/python-ndb/commit/e23f42b27cec6f7fcf05ae51d4e6ee2aea30f6ca)), closes [#566](https://www.github.com/googleapis/python-ndb/issues/566)","* replicate legacy behavior for using cache with queries ([#613](https://www.github.com/googleapis/python-ndb/issues/613)) ([edd1185](https://www.github.com/googleapis/python-ndb/commit/edd1185f01c6db5b4876f7b0ce81df0315c98890)), closes [#586](https://www.github.com/googleapis/python-ndb/issues/586)","* support `int` as base type for `BooleanProperty` ([#624](https://www.github.com/googleapis/python-ndb/issues/624)) ([a04bf3a](https://www.github.com/googleapis/python-ndb/commit/a04bf3acef3eb88f23c4f0832ce74af9557cb03d))","","## [1.7.3](https://www.github.com/googleapis/python-ndb/compare/v1.7.2...v1.7.3) (2021-01-21)","","","### Bug Fixes","","* handle negatives in protobuf deserialization ([#591](https://www.github.com/googleapis/python-ndb/issues/591)) ([0d3d3ca](https://www.github.com/googleapis/python-ndb/commit/0d3d3ca99df10a3d6e1c6f31ee719faa373ccacf)), closes [#590](https://www.github.com/googleapis/python-ndb/issues/590)","* make nested retry blocks work for RPC calls ([#589](https://www.github.com/googleapis/python-ndb/issues/589)) ([f125459](https://www.github.com/googleapis/python-ndb/commit/f125459d4eef05861776ccefd29d137a5f22e240))","","","### Documentation","","* correct documentation for `GlobalCache` ([#565](https://www.github.com/googleapis/python-ndb/issues/565)) ([be5b157](https://www.github.com/googleapis/python-ndb/commit/be5b1571e8e30bd1d736ae5d77b3017473b1a373))","* fix return type in fetch docstring ([#594](https://www.github.com/googleapis/python-ndb/issues/594)) ([9eb15f4](https://www.github.com/googleapis/python-ndb/commit/9eb15f4ff75204ad25f943dbc1e85c227d88faf6)), closes [#576](https://www.github.com/googleapis/python-ndb/issues/576)","* fix typo in example code ([#588](https://www.github.com/googleapis/python-ndb/issues/588)) ([76fab49](https://www.github.com/googleapis/python-ndb/commit/76fab49f9d08a2add4135c011d08ff24f04549b2))","","## [1.7.2](https://www.github.com/googleapis/python-ndb/compare/v1.7.1...v1.7.2) (2020-12-16)","","","### Bug Fixes","","* always use brute-force counting with Datastore emulator and clean up related hacks ([#585](https://www.github.com/googleapis/python-ndb/issues/585)) ([8480a8b](https://www.github.com/googleapis/python-ndb/commit/8480a8bd0d169e2499ee62d1fb9d140aa6ce00d4))","* return a tuple when empty result returned on query ([#582](https://www.github.com/googleapis/python-ndb/issues/582)) ([7cf0e87](https://www.github.com/googleapis/python-ndb/commit/7cf0e878054dbfe7bc8b6c0c9fea96a602e8e859))","* support empty not_finished messages that cause query.count() to return early ([#580](https://www.github.com/googleapis/python-ndb/issues/580)) ([fc31553](https://www.github.com/googleapis/python-ndb/commit/fc31553c77f6e7865df0efd4c820f69366f6607c)), closes [#575](https://www.github.com/googleapis/python-ndb/issues/575)","","","### Documentation","","* Add urlsafe() info to migration notes ([#579](https://www.github.com/googleapis/python-ndb/issues/579)) ([9df2f9f](https://www.github.com/googleapis/python-ndb/commit/9df2f9f8be40d95fbde297335eb99b19bafad583))","","## [1.7.1](https://www.github.com/googleapis/python-ndb/compare/v1.7.0...v1.7.1) (2020-11-11)","","","### Bug Fixes","","* **dependencies:** Pin to less than 2.0.0 for google-cloud-datastore ([#569](https://www.github.com/googleapis/python-ndb/issues/569)) ([c8860a6](https://www.github.com/googleapis/python-ndb/commit/c8860a6541f638fb458b74cfdffc1ddb7b035549)), closes [#568](https://www.github.com/googleapis/python-ndb/issues/568)","","## [1.7.0](https://www.github.com/googleapis/python-ndb/compare/v1.6.1...v1.7.0) (2020-10-22)","","","### Features","","* fault tolerance for global caches ([#560](https://www.github.com/googleapis/python-ndb/issues/560)) ([8ab8ee0](https://www.github.com/googleapis/python-ndb/commit/8ab8ee01f5577cfe468ed77d3cd48d6f6b816b0e)), closes [#557](https://www.github.com/googleapis/python-ndb/issues/557)","* Transaction propagation using ndb.TransactionOptions ([#537](https://www.github.com/googleapis/python-ndb/issues/537)) ([f3aa027](https://www.github.com/googleapis/python-ndb/commit/f3aa027d7d55d9aee9a72ce23cebc26a5975bb28))","","## [1.6.1](https://www.github.com/googleapis/python-ndb/compare/v1.6.0...v1.6.1) (2020-10-08)","","","### Bug Fixes","","* `[@non](https://www.github.com/non)_transactional` decorator was not working correctly with async ([#554](https://www.github.com/googleapis/python-ndb/issues/554)) ([758c8e6](https://www.github.com/googleapis/python-ndb/commit/758c8e66314da4cb1f077e9fbe8cf1ae09bccd4e)), closes [#552](https://www.github.com/googleapis/python-ndb/issues/552)","* fix a connection leak in RedisCache ([#556](https://www.github.com/googleapis/python-ndb/issues/556)) ([47ae172](https://www.github.com/googleapis/python-ndb/commit/47ae172edc435a49d25687d83747afff153b59d2))","* get_by_id and get_or_insert should use default namespace when passed in ([#542](https://www.github.com/googleapis/python-ndb/issues/542)) ([3674650](https://www.github.com/googleapis/python-ndb/commit/3674650a7ba1a1dd7a72b728f343f623f660ba6a)), closes [#535](https://www.github.com/googleapis/python-ndb/issues/535)","","","### Documentation","","* address docs builds and memcached customization to docker file ([#548](https://www.github.com/googleapis/python-ndb/issues/548)) ([88e7e24](https://www.github.com/googleapis/python-ndb/commit/88e7e244854acb2409c324855deb9229f33a44fd))","* update docker image used for docs generation [#549](https://www.github.com/googleapis/python-ndb/issues/549) ([5e8bf57](https://www.github.com/googleapis/python-ndb/commit/5e8bf57508e3b995f51dcc3171e5ea77c4bc4484))","","## [1.6.0](https://www.github.com/googleapis/python-ndb/compare/v1.5.2...v1.6.0) (2020-09-14)","","","### Features","","* memcached integration ([#536](https://www.github.com/googleapis/python-ndb/issues/536)) ([2bd43da](https://www.github.com/googleapis/python-ndb/commit/2bd43dabbd6b6fbffbb4390520e47ae06262c858))","","## [1.5.2](https://www.github.com/googleapis/python-ndb/compare/v1.5.1...v1.5.2) (2020-09-03)","","","### Bug Fixes","","* avoid kind error when using subclasses in local structured properties ([#531](https://www.github.com/googleapis/python-ndb/issues/531)) ([49f9e48](https://www.github.com/googleapis/python-ndb/commit/49f9e48a7d8bf9c3c8cc8a30ae385bcbcb95dbaa))","* fix bug when setting naive datetime on `DateTimeProperty` with timezone ([#534](https://www.github.com/googleapis/python-ndb/issues/534)) ([ad42606](https://www.github.com/googleapis/python-ndb/commit/ad426063257f8633bb4207a77b29b35fc0173ec1)), closes [#517](https://www.github.com/googleapis/python-ndb/issues/517)","* make optimized `Query.count()` work with the datastore emulator ([#528](https://www.github.com/googleapis/python-ndb/issues/528)) ([e5df1e3](https://www.github.com/googleapis/python-ndb/commit/e5df1e37c97fc0765f8f95ada6d4dadd7b4bb445)), closes [#525](https://www.github.com/googleapis/python-ndb/issues/525)","* make sure `keys_only` ordered multiquery returns keys not entities ([#527](https://www.github.com/googleapis/python-ndb/issues/527)) ([2078dc1](https://www.github.com/googleapis/python-ndb/commit/2078dc1c2239299729d8ecade2e3592f49bc65db)), closes [#526](https://www.github.com/googleapis/python-ndb/issues/526)","","","### Documentation","","* fix type hint for urlsafe ([#532](https://www.github.com/googleapis/python-ndb/issues/532)) ([87a3475](https://www.github.com/googleapis/python-ndb/commit/87a347536b459c461a02c401b8a8c097e276d3ea)), closes [#529](https://www.github.com/googleapis/python-ndb/issues/529)","","## [1.5.1](https://www.github.com/googleapis/python-ndb/compare/v1.5.0...v1.5.1) (2020-08-28)","","","### Bug Fixes","","* fix exception handling bug in tasklets ([#520](https://www.github.com/googleapis/python-ndb/issues/520)) ([fc0366a](https://www.github.com/googleapis/python-ndb/commit/fc0366a9db9fa5263533631cb08ccb5be07960ad)), closes [#519](https://www.github.com/googleapis/python-ndb/issues/519)","* fix format exceptions in `utils.logging_debug` ([#514](https://www.github.com/googleapis/python-ndb/issues/514)) ([d38c0a3](https://www.github.com/googleapis/python-ndb/commit/d38c0a36dac1dc183d344a08050815010b256638)), closes [#508](https://www.github.com/googleapis/python-ndb/issues/508)","* transparently add sort properties to projection for multiqueries ([#511](https://www.github.com/googleapis/python-ndb/issues/511)) ([4e46327](https://www.github.com/googleapis/python-ndb/commit/4e463273a36b5fe69f87d429260fba1a690d55b9)), closes [#509](https://www.github.com/googleapis/python-ndb/issues/509)","","## [1.5.0](https://www.github.com/googleapis/python-ndb/compare/v1.4.2...v1.5.0) (2020-08-12)","","","### Features","","* use contextvars.ConvextVar instead of threading.local in Python 3 ([4c634f3](https://www.github.com/googleapis/python-ndb/commit/4c634f348f8847fda139fe469e0e8adfabfd649a)), closes [#504](https://www.github.com/googleapis/python-ndb/issues/504)","","","### Bug Fixes","","* fix concurrency bug in redis cache implementation ([#503](https://www.github.com/googleapis/python-ndb/issues/503)) ([6c18b95](https://www.github.com/googleapis/python-ndb/commit/6c18b9522e83e5e599a491c6ed287de2d7cdf089)), closes [#496](https://www.github.com/googleapis/python-ndb/issues/496)","* support polymodel in local structured property ([#497](https://www.github.com/googleapis/python-ndb/issues/497)) ([9ccbdd2](https://www.github.com/googleapis/python-ndb/commit/9ccbdd23448dcb401b111f03e951fa89ae65174f)), closes [#481](https://www.github.com/googleapis/python-ndb/issues/481)","","## [1.4.2](https://www.github.com/googleapis/python-ndb/compare/v1.4.1...v1.4.2) (2020-07-30)","","","### Bug Fixes","","* include ancestors in `Key.to_legacy_urlsafe` ([#494](https://www.github.com/googleapis/python-ndb/issues/494)) ([0f29190](https://www.github.com/googleapis/python-ndb/commit/0f2919070ef78a17988fb5cae573a1514ff63926)), closes [#478](https://www.github.com/googleapis/python-ndb/issues/478)","* properly handle explicitly passing default namespace ([#488](https://www.github.com/googleapis/python-ndb/issues/488)) ([3c64483](https://www.github.com/googleapis/python-ndb/commit/3c644838a499f54620c6a12773f8cdd1c245096f)), closes [#476](https://www.github.com/googleapis/python-ndb/issues/476)","","## [1.4.1](https://www.github.com/googleapis/python-ndb/compare/v1.4.0...v1.4.1) (2020-07-10)","","","### Bug Fixes","","* do not disclose cache contents in stack traces ([#485](https://www.github.com/googleapis/python-ndb/issues/485)) ([2d2c5a2](https://www.github.com/googleapis/python-ndb/commit/2d2c5a2004629b807f296f74648c789c6ce9a6ba)), closes [#482](https://www.github.com/googleapis/python-ndb/issues/482)","","## [1.4.0](https://www.github.com/googleapis/python-ndb/compare/v1.3.0...v1.4.0) (2020-07-01)","","","### Features","","* allow `Query.fetch_page` for queries with post filters ([#463](https://www.github.com/googleapis/python-ndb/issues/463)) ([632435c](https://www.github.com/googleapis/python-ndb/commit/632435c155f565f5e7b45ab08680613599994f0e)), closes [#270](https://www.github.com/googleapis/python-ndb/issues/270)","* record time spent waiting on rpc calls ([#472](https://www.github.com/googleapis/python-ndb/issues/472)) ([1629805](https://www.github.com/googleapis/python-ndb/commit/16298057c96921a3c995e9ddded36d37fc90819f))","","","### Bug Fixes","","* ignore datastore properties that are not mapped to NDB properties ([#470](https://www.github.com/googleapis/python-ndb/issues/470)) ([ab460fa](https://www.github.com/googleapis/python-ndb/commit/ab460fad8ded5b3b550359253e90a6b189145842)), closes [#461](https://www.github.com/googleapis/python-ndb/issues/461)","* make sure `tests` package is not included in distribution ([#469](https://www.github.com/googleapis/python-ndb/issues/469)) ([5a20d0a](https://www.github.com/googleapis/python-ndb/commit/5a20d0af6c6c1c2d10e9e42a35a5b58fa952547c)), closes [#468](https://www.github.com/googleapis/python-ndb/issues/468)","* retry grpc `UNKNOWN` errors ([#458](https://www.github.com/googleapis/python-ndb/issues/458)) ([5d354e4](https://www.github.com/googleapis/python-ndb/commit/5d354e4b4247372f2ffdc9caa2df1516ce97ff8d)), closes [#310](https://www.github.com/googleapis/python-ndb/issues/310)","","## [1.3.0](https://www.github.com/googleapis/python-ndb/compare/v1.2.1...v1.3.0) (2020-06-01)","","","### Features","","* add templates for python samples projects ([#506](https://www.github.com/googleapis/python-ndb/issues/506)) ([#455](https://www.github.com/googleapis/python-ndb/issues/455)) ([e329276](https://www.github.com/googleapis/python-ndb/commit/e32927623645112513675fbbfe5884a63eac24e1))","* convert grpc errors to api core exceptions ([#457](https://www.github.com/googleapis/python-ndb/issues/457)) ([042cf6c](https://www.github.com/googleapis/python-ndb/commit/042cf6ceabe2a47b2fe77501ccd618e64877886a)), closes [#416](https://www.github.com/googleapis/python-ndb/issues/416)","","","### Bug Fixes","","* Add support for 'name' Key instances to to_legacy_urlsafe ([#420](https://www.github.com/googleapis/python-ndb/issues/420)) ([59fc5af](https://www.github.com/googleapis/python-ndb/commit/59fc5afc36d01b72ad4b53befa593803b55df8b3))","* all query types should use cache if available ([#454](https://www.github.com/googleapis/python-ndb/issues/454)) ([69b3a0a](https://www.github.com/googleapis/python-ndb/commit/69b3a0ae49ab446a9ed903646ae6e01690411d3e)), closes [#441](https://www.github.com/googleapis/python-ndb/issues/441)","* fix `NotImplementedError` for `get_or_insert` inside a transaction ([#451](https://www.github.com/googleapis/python-ndb/issues/451)) ([99aa403](https://www.github.com/googleapis/python-ndb/commit/99aa40358b469be1c8486c84ba5873929715f25e)), closes [#433](https://www.github.com/googleapis/python-ndb/issues/433)","* make sure datastore key constructor never gets None in a pair ([#446](https://www.github.com/googleapis/python-ndb/issues/446)) ([e6173cf](https://www.github.com/googleapis/python-ndb/commit/e6173cf8feec866c365d35e7cb461f72d19544fa)), closes [#384](https://www.github.com/googleapis/python-ndb/issues/384) [#439](https://www.github.com/googleapis/python-ndb/issues/439)","* refactor transactions to use their own event loops ([#443](https://www.github.com/googleapis/python-ndb/issues/443)) ([7590be8](https://www.github.com/googleapis/python-ndb/commit/7590be8233fe58f9c45076eb38c1995363f02362)), closes [#426](https://www.github.com/googleapis/python-ndb/issues/426) [#426](https://www.github.com/googleapis/python-ndb/issues/426)","* respect `_code_name` in `StructuredProperty.__getattr__` ([#453](https://www.github.com/googleapis/python-ndb/issues/453)) ([4f54dfc](https://www.github.com/googleapis/python-ndb/commit/4f54dfcee91b15d45cc6046f6b9933d1593d0956)), closes [#449](https://www.github.com/googleapis/python-ndb/issues/449)","* strip `order_by` option from query when using `count()` ([#452](https://www.github.com/googleapis/python-ndb/issues/452)) ([9d20a2d](https://www.github.com/googleapis/python-ndb/commit/9d20a2d5d75cc0590c4326019ea94159bb4aebe2)), closes [#447](https://www.github.com/googleapis/python-ndb/issues/447)","","## [1.2.1](https://www.github.com/googleapis/python-ndb/compare/v1.2.0...v1.2.1) (2020-05-15)","","","### Features","","* Improve custom validators ([#408](https://www.github.com/googleapis/python-ndb/issues/408)) ([5b6cdd6](https://www.github.com/googleapis/python-ndb/commit/5b6cdd627dfce3e5b987c2ecd945d39b5056aa37)), closes [#252](https://www.github.com/googleapis/python-ndb/issues/252)","","","### Bug Fixes","","* clear context cache on rollback ([#410](https://www.github.com/googleapis/python-ndb/issues/410)) ([aa17986](https://www.github.com/googleapis/python-ndb/commit/aa17986759f32ea16c340961d70fbc8fc123b244)), closes [#398](https://www.github.com/googleapis/python-ndb/issues/398)","* do not allow empty key parts for key constructor in namespaced model ([#401](https://www.github.com/googleapis/python-ndb/issues/401)) ([f3528b3](https://www.github.com/googleapis/python-ndb/commit/f3528b3e51c93c762c4e31eed76a1b2f06be84e1)), closes [#384](https://www.github.com/googleapis/python-ndb/issues/384)","* don't rely on duck typing for `_retry.is_transient_error` ([#425](https://www.github.com/googleapis/python-ndb/issues/425)) ([4524542](https://www.github.com/googleapis/python-ndb/commit/4524542e5f6da1af047d86fee3d48cf65ea75508)), closes [#415](https://www.github.com/googleapis/python-ndb/issues/415)","* handle empty batches from Firestore ([#396](https://www.github.com/googleapis/python-ndb/issues/396)) ([1a054ca](https://www.github.com/googleapis/python-ndb/commit/1a054cadff07074de9395cb99ae2c40f987aed2e)), closes [#386](https://www.github.com/googleapis/python-ndb/issues/386)","* make sure reads happen in transaction if there is a transaction ([#395](https://www.github.com/googleapis/python-ndb/issues/395)) ([f32644f](https://www.github.com/googleapis/python-ndb/commit/f32644fcf8c16dc0fd74e14108d7955effff1771)), closes [#394](https://www.github.com/googleapis/python-ndb/issues/394)","* more should be boolean in fetch_page call ([#423](https://www.github.com/googleapis/python-ndb/issues/423)) ([a69ffd2](https://www.github.com/googleapis/python-ndb/commit/a69ffd21aaaa881f5e8e54339fd62a1b02d19c4b)), closes [#422](https://www.github.com/googleapis/python-ndb/issues/422)","* support same options in model.query as query ([#407](https://www.github.com/googleapis/python-ndb/issues/407)) ([d08019f](https://www.github.com/googleapis/python-ndb/commit/d08019fbecb0f018987267b01929a21e97b418e2))","* uniform handling of `projection` argument ([#428](https://www.github.com/googleapis/python-ndb/issues/428)) ([2b65c04](https://www.github.com/googleapis/python-ndb/commit/2b65c04e72a66062e2c792b5b1fb067fb935987f)), closes [#379](https://www.github.com/googleapis/python-ndb/issues/379)","* use `skipped_results` from query results to adjust offset ([#399](https://www.github.com/googleapis/python-ndb/issues/399)) ([6d1452d](https://www.github.com/googleapis/python-ndb/commit/6d1452d977f3f030ff65d5cbb3e593c0789e6c14)), closes [#392](https://www.github.com/googleapis/python-ndb/issues/392)","* use fresh context cache for each transaction ([#409](https://www.github.com/googleapis/python-ndb/issues/409)) ([5109b91](https://www.github.com/googleapis/python-ndb/commit/5109b91425e917727973079020dc51c2b8fddf53)), closes [#394](https://www.github.com/googleapis/python-ndb/issues/394)","* use true `keys_only` query for `Query.count()` ([#405](https://www.github.com/googleapis/python-ndb/issues/405)) ([88184c3](https://www.github.com/googleapis/python-ndb/commit/88184c312dd7bdc7bd36ec58fd53e3fd5001d7ac)), closes [#400](https://www.github.com/googleapis/python-ndb/issues/400) [#404](https://www.github.com/googleapis/python-ndb/issues/404)","","## [1.2.0](https://www.github.com/googleapis/python-ndb/compare/v1.1.2...v1.2.0) (2020-04-20)","","","### Features","","* add `namespace` property to `context.Context` ([#388](https://www.github.com/googleapis/python-ndb/issues/388)) ([34bac15](https://www.github.com/googleapis/python-ndb/commit/34bac153bcc191857715a8760671acaf4fd12706)), closes [#385](https://www.github.com/googleapis/python-ndb/issues/385)","* new `join` argument for `transaction` and related functions ([#381](https://www.github.com/googleapis/python-ndb/issues/381)) ([2c91685](https://www.github.com/googleapis/python-ndb/commit/2c916851d088b650a5d643dc322a4919f456fe05)), closes [#366](https://www.github.com/googleapis/python-ndb/issues/366)","","","### Bug Fixes","","* accept `bytes` or `str` as base value for `JsonProperty` ([#380](https://www.github.com/googleapis/python-ndb/issues/380)) ([e7a0c7c](https://www.github.com/googleapis/python-ndb/commit/e7a0c7c8fb7d80f009442f759abadbd336c0c828)), closes [#378](https://www.github.com/googleapis/python-ndb/issues/378)","* add `ABORTED` to retryable status codes ([#391](https://www.github.com/googleapis/python-ndb/issues/391)) ([183c0c3](https://www.github.com/googleapis/python-ndb/commit/183c0c33a4429ad6bdaa9f141a8ac88ad4e3544d)), closes [#383](https://www.github.com/googleapis/python-ndb/issues/383)","* add missing _get_for_dict method ([#368](https://www.github.com/googleapis/python-ndb/issues/368)) ([55b80ff](https://www.github.com/googleapis/python-ndb/commit/55b80ffa086568e8f820f9ab304952bc39383bd8)), closes [#367](https://www.github.com/googleapis/python-ndb/issues/367)","* empty Entities for optional LocalStructuredProperty fields  ([#370](https://www.github.com/googleapis/python-ndb/issues/370)) ([27a0969](https://www.github.com/googleapis/python-ndb/commit/27a0969982013b37d3f6d8785c3ad127788661f9)), closes [#369](https://www.github.com/googleapis/python-ndb/issues/369)","* return type in DateTimeProperty._to_base_type docstring ([#371](https://www.github.com/googleapis/python-ndb/issues/371)) ([0c549c8](https://www.github.com/googleapis/python-ndb/commit/0c549c89ff78554c4a4dde40973b503aa741422f))","","## [1.1.2](https://www.github.com/googleapis/python-ndb/compare/v1.1.1...v1.1.2) (2020-03-16)","","","### Bug Fixes","","* check for legacy local structured property values ([#365](https://www.github.com/googleapis/python-ndb/issues/365)) ([f81f406](https://www.github.com/googleapis/python-ndb/commit/f81f406d8e1059121341828836fce2aae5782fca)), closes [#359](https://www.github.com/googleapis/python-ndb/issues/359)","* move stub (grpc communication channel) to client ([#362](https://www.github.com/googleapis/python-ndb/issues/362)) ([90e0625](https://www.github.com/googleapis/python-ndb/commit/90e06252df25fa2ce199543e7b01b17ec284aaf1)), closes [#343](https://www.github.com/googleapis/python-ndb/issues/343)","","## [1.1.1](https://www.github.com/googleapis/python-ndb/compare/v1.1.0...v1.1.1) (2020-03-05)","","","### Bug Fixes","","* fix bug with `yield` of empty list in tasklets ([#354](https://www.github.com/googleapis/python-ndb/issues/354)) ([2d60ebf](https://www.github.com/googleapis/python-ndb/commit/2d60ebfe656abd75f6b9303550b2e03c2cbd79b7)), closes [#353](https://www.github.com/googleapis/python-ndb/issues/353)","* LocalStructuredProperty keep_keys ([#355](https://www.github.com/googleapis/python-ndb/issues/355)) ([9ff1b3d](https://www.github.com/googleapis/python-ndb/commit/9ff1b3de817da50b58a6aed574d7e2f2dcf92310))","* support nested sequences in parallel `yield` for tasklets ([#358](https://www.github.com/googleapis/python-ndb/issues/358)) ([8c91e7a](https://www.github.com/googleapis/python-ndb/commit/8c91e7ae8262f355a9eafe9051b3c1ef19d4c7cd)), closes [#349](https://www.github.com/googleapis/python-ndb/issues/349)","","## [1.1.0](https://www.github.com/googleapis/python-ndb/compare/v1.0.1...v1.1.0) (2020-03-02)","","","### Features","","* `Key.to_legacy_urlsafe()` ([#348](https://www.github.com/googleapis/python-ndb/issues/348)) ([ab10e3c](https://www.github.com/googleapis/python-ndb/commit/ab10e3c4998b8995d5a057163ce8d9dc8992111a))","","","### Bug Fixes","","* allow legacy ndb to read LocalStructuredProperty entities. ([#344](https://www.github.com/googleapis/python-ndb/issues/344)) ([7b07692](https://www.github.com/googleapis/python-ndb/commit/7b0769236841cea1e864ae1e928a7b7021d300dc))","* fix delete in transaction ([#333](https://www.github.com/googleapis/python-ndb/issues/333)) ([5c162f4](https://www.github.com/googleapis/python-ndb/commit/5c162f4337b837f7125b1fb03f8cff5fb1b4a356)), closes [#271](https://www.github.com/googleapis/python-ndb/issues/271)","* make sure ``key.Key`` uses namespace from client when not specified ([#339](https://www.github.com/googleapis/python-ndb/issues/339)) ([44f02e4](https://www.github.com/googleapis/python-ndb/commit/44f02e46deef245f4d1ae80f9d2e4edd46ecd265)), closes [#337](https://www.github.com/googleapis/python-ndb/issues/337)","* properly exclude from indexes non-indexed subproperties of structured properties ([#346](https://www.github.com/googleapis/python-ndb/issues/346)) ([dde6b85](https://www.github.com/googleapis/python-ndb/commit/dde6b85897457cef7a1080690df5cfae9cb6c31e)), closes [#341](https://www.github.com/googleapis/python-ndb/issues/341)","* resurrect support for compressed text property ([#342](https://www.github.com/googleapis/python-ndb/issues/342)) ([5a86456](https://www.github.com/googleapis/python-ndb/commit/5a864563dc6e155b73e2ac35af6519823c356e19)), closes [#277](https://www.github.com/googleapis/python-ndb/issues/277)","* use correct name when reading legacy structured properties with names ([#347](https://www.github.com/googleapis/python-ndb/issues/347)) ([01d1256](https://www.github.com/googleapis/python-ndb/commit/01d1256e9d41c20bb5836067455c4be4abe1c516)), closes [#345](https://www.github.com/googleapis/python-ndb/issues/345)","","## [1.0.1](https://www.github.com/googleapis/python-ndb/compare/v1.0.0...v1.0.1) (2020-02-11)","","","### Bug Fixes","","* attempt to have fewer transient errors in continuous integration ([#328](https://www.github.com/googleapis/python-ndb/issues/328)) ([0484c7a](https://www.github.com/googleapis/python-ndb/commit/0484c7abf5a1529db5fecf17ebdf0252eab8449e))","* correct migration doc ([#313](https://www.github.com/googleapis/python-ndb/issues/313)) ([#317](https://www.github.com/googleapis/python-ndb/issues/317)) ([efce24f](https://www.github.com/googleapis/python-ndb/commit/efce24f16a877aecf78264946c22a2c9e3e97f53))","* disuse `__slots__` in most places ([#330](https://www.github.com/googleapis/python-ndb/issues/330)) ([a8b723b](https://www.github.com/googleapis/python-ndb/commit/a8b723b992e7a91860f6a73c0ee0fd7071e574d3)), closes [#311](https://www.github.com/googleapis/python-ndb/issues/311)","* don't set key on structured property entities ([#312](https://www.github.com/googleapis/python-ndb/issues/312)) ([63f3d94](https://www.github.com/googleapis/python-ndb/commit/63f3d943001d77c1ea0eb9b719e71ecff4eb5dd6)), closes [#281](https://www.github.com/googleapis/python-ndb/issues/281)","* fix race condition in remote calls ([#329](https://www.github.com/googleapis/python-ndb/issues/329)) ([f550510](https://www.github.com/googleapis/python-ndb/commit/f5505100f065e71a14714369d8aef1f7b06ee838)), closes [#302](https://www.github.com/googleapis/python-ndb/issues/302)","* make query options convert projection properties to strings ([#325](https://www.github.com/googleapis/python-ndb/issues/325)) ([d1a4800](https://www.github.com/googleapis/python-ndb/commit/d1a4800c5f53490e6956c11797bd3472ea404b5b))","* use multiple batches of limited size for large operations ([#321](https://www.github.com/googleapis/python-ndb/issues/321)) ([8e69453](https://www.github.com/googleapis/python-ndb/commit/8e6945377a4635632d0c35b7a41daebe501d4f0f)), closes [#318](https://www.github.com/googleapis/python-ndb/issues/318)","* use six string_types and integer_types for all isinstance() checks ([#323](https://www.github.com/googleapis/python-ndb/issues/323)) ([133acf8](https://www.github.com/googleapis/python-ndb/commit/133acf87b2a2efbfeae23ac9f629132cfb368a55))","","## [1.0.0](https://www.github.com/googleapis/python-ndb/compare/v0.2.2...v1.0.0) (2020-01-30)","","","### Bug Fixes","","* add user agent prefix google-cloud-ndb + version ([#299](https://www.github.com/googleapis/python-ndb/issues/299)) ([9fa136b](https://www.github.com/googleapis/python-ndb/commit/9fa136b9c163b24aefde6ccbc227a1035fa24bcd))","* Finish implementation of UserProperty. ([#301](https://www.github.com/googleapis/python-ndb/issues/301)) ([fd2e0ed](https://www.github.com/googleapis/python-ndb/commit/fd2e0ed9bb6cec8b5651c58eaee2b3ca8a96aebb)), closes [#280](https://www.github.com/googleapis/python-ndb/issues/280)","* Fix bug when wrapping base values. ([#303](https://www.github.com/googleapis/python-ndb/issues/303)) ([91ca8d9](https://www.github.com/googleapis/python-ndb/commit/91ca8d9044671361b731323317cef720dd19be82)), closes [#300](https://www.github.com/googleapis/python-ndb/issues/300)","* Fix bug with the _GlobalCacheGetBatch. ([#305](https://www.github.com/googleapis/python-ndb/issues/305)) ([f213165](https://www.github.com/googleapis/python-ndb/commit/f2131654c6e5f67895fb0e3c09a507e8dc25c4bb)), closes [#294](https://www.github.com/googleapis/python-ndb/issues/294)","* Preserve `QueryIterator.cursor_after`. ([#296](https://www.github.com/googleapis/python-ndb/issues/296)) ([4ffedc7](https://www.github.com/googleapis/python-ndb/commit/4ffedc7b5a2366be15dcd299052d8a46a748addd)), closes [#292](https://www.github.com/googleapis/python-ndb/issues/292)","","## [0.2.2](https://www.github.com/googleapis/python-ndb/compare/v0.2.1...v0.2.2) (2020-01-15)","","","### Bug Fixes","","* Convert NDB keys to Datastore keys for serialization. ([#287](https://www.github.com/googleapis/python-ndb/issues/287)) ([779411b](https://www.github.com/googleapis/python-ndb/commit/779411b562575bd2d6f0627ce1903c2996f3c529)), closes [#284](https://www.github.com/googleapis/python-ndb/issues/284)","* fix missing __ne__ methods ([#279](https://www.github.com/googleapis/python-ndb/issues/279)) ([03dd5e1](https://www.github.com/googleapis/python-ndb/commit/03dd5e1c78b8e8354379d743e2f810ef1bece4d2))","* Fix repr() for ComputedProperty ([#291](https://www.github.com/googleapis/python-ndb/issues/291)) ([2d8857b](https://www.github.com/googleapis/python-ndb/commit/2d8857b8e9a7119a47fd72ae76401af4e42bb5b5)), closes [#256](https://www.github.com/googleapis/python-ndb/issues/256)","* Handle `int` for DateTimeProperty ([#285](https://www.github.com/googleapis/python-ndb/issues/285)) ([2fe5be3](https://www.github.com/googleapis/python-ndb/commit/2fe5be31784a036062180f9c0f2c7b5eda978123)), closes [#261](https://www.github.com/googleapis/python-ndb/issues/261)","* More friendly error message when using `fetch_page` with post-filters. ([#269](https://www.github.com/googleapis/python-ndb/issues/269)) ([a40ae74](https://www.github.com/googleapis/python-ndb/commit/a40ae74d74fa83119349de4b3a91f90df40d7ea5)), closes [#254](https://www.github.com/googleapis/python-ndb/issues/254)","","## [0.2.1](https://www.github.com/googleapis/python-ndb/compare/v0.2.0...v0.2.1) (2019-12-10)","","","### Bug Fixes","","* Correctly handle `limit` and `offset` when batching query results. ([#237](https://www.github.com/googleapis/python-ndb/issues/237)) ([8d3ce5c](https://www.github.com/googleapis/python-ndb/commit/8d3ce5c6cce9055d21400aa9feebc99e66393667)), closes [#236](https://www.github.com/googleapis/python-ndb/issues/236)","* Improve test cleanup. ([#234](https://www.github.com/googleapis/python-ndb/issues/234)) ([21f3d8b](https://www.github.com/googleapis/python-ndb/commit/21f3d8b12a3e2fefe488a951fb5186c7620cb864))","* IntegerProperty now accepts `long` type for Python 2.7. ([#262](https://www.github.com/googleapis/python-ndb/issues/262)) ([9591e56](https://www.github.com/googleapis/python-ndb/commit/9591e569db32769c449d60dd3d9bdd6772dbc8f6)), closes [#250](https://www.github.com/googleapis/python-ndb/issues/250)","* Unstable order bug in unit test. ([#251](https://www.github.com/googleapis/python-ndb/issues/251)) ([7ff1df5](https://www.github.com/googleapis/python-ndb/commit/7ff1df51056f8498dc4320fc4b2684ead34a9116)), closes [#244](https://www.github.com/googleapis/python-ndb/issues/244)","","## 0.2.0","","11-06-2019 10:39 PST","","","### Implementation Changes","- `query.map()` and `query.map_async()` hanging with empty result set. ([#230](https://github.com/googleapis/python-ndb/pull/230))","- remove dunder version ([#202](https://github.com/googleapis/python-ndb/pull/202))","- Check context ([#211](https://github.com/googleapis/python-ndb/pull/211))","- Fix `Model._gql`. ([#223](https://github.com/googleapis/python-ndb/pull/223))","- Update intersphinx mapping ([#206](https://github.com/googleapis/python-ndb/pull/206))","- do not set meanings for compressed property when it has no value ([#200](https://github.com/googleapis/python-ndb/pull/200))","","### New Features","- Python 2.7 compatibility ([#203](https://github.com/googleapis/python-ndb/pull/203))","- Add `tzinfo` to DateTimeProperty. ([#226](https://github.com/googleapis/python-ndb/pull/226))","- Implement `_prepare_for_put` for `StructuredProperty` and `LocalStructuredProperty`. ([#221](https://github.com/googleapis/python-ndb/pull/221))","- Implement ``Query.map`` and ``Query.map_async``. ([#218](https://github.com/googleapis/python-ndb/pull/218))","- Allow class member values in projection and distinct queries  ([#214](https://github.com/googleapis/python-ndb/pull/214))","- Implement ``Future.cancel()`` ([#204](https://github.com/googleapis/python-ndb/pull/204))","","### Documentation","- Update README to include Python 2 support. ([#231](https://github.com/googleapis/python-ndb/pull/231))","- Fix typo in MIGRATION_NOTES.md ([#208](https://github.com/googleapis/python-ndb/pull/208))","- Spelling fixes. ([#209](https://github.com/googleapis/python-ndb/pull/209))","- Add spell checking dependencies for documentation build. ([#196](https://github.com/googleapis/python-ndb/pull/196))","","### Internal / Testing Changes","- Enable release-please ([#228](https://github.com/googleapis/python-ndb/pull/228))","- Introduce local redis for tests ([#191](https://github.com/googleapis/python-ndb/pull/191))","- Use .kokoro configs from templates. ([#194](https://github.com/googleapis/python-ndb/pull/194))","","## 0.1.0","","09-10-2019 13:43 PDT","","### Deprecations","- Deprecate `max_memcache_items`, memcache options, `force_rewrites`, `Query.map()`, `Query.map_async()`, `blobstore`. ([#168](https://github.com/googleapis/python-ndb/pull/168))","","### Implementation Changes","- Fix error retrieving values for properties with different stored name ([#187](https://github.com/googleapis/python-ndb/pull/187))","- Use correct class when deserializing a PolyModel entity. ([#186](https://github.com/googleapis/python-ndb/pull/186))","- Support legacy compressed properties back and forth ([#183](https://github.com/googleapis/python-ndb/pull/183))","- Store Structured Properties in backwards compatible way ([#184](https://github.com/googleapis/python-ndb/pull/184))","- Allow put and get to work with compressed blob properties ([#175](https://github.com/googleapis/python-ndb/pull/175))","- Raise an exception when storing entity with partial key without Datastore. ([#171](https://github.com/googleapis/python-ndb/pull/171))","- Normalize to prefer ``project`` over ``app``. ([#170](https://github.com/googleapis/python-ndb/pull/170))","- Enforce naive datetimes for ``DateTimeProperty``. ([#167](https://github.com/googleapis/python-ndb/pull/167))","- Handle projections with structured properties. ([#166](https://github.com/googleapis/python-ndb/pull/166))","- Fix polymodel put and get ([#151](https://github.com/googleapis/python-ndb/pull/151))","- `_prepare_for_put` was not being called at entity level ([#138](https://github.com/googleapis/python-ndb/pull/138))","- Fix key property. ([#136](https://github.com/googleapis/python-ndb/pull/136))","- Fix thread local context. ([#131](https://github.com/googleapis/python-ndb/pull/131))","- Bugfix: Respect ``_indexed`` flag of properties. ([#127](https://github.com/googleapis/python-ndb/pull/127))","- Backwards compatibility with older style structured properties. ([#126](https://github.com/googleapis/python-ndb/pull/126))","","### New Features","- Read legacy data with Repeated Structured Expando properties. ([#176](https://github.com/googleapis/python-ndb/pull/176))","- Implement ``Context.call_on_commit``. ([#159](https://github.com/googleapis/python-ndb/pull/159))","- Implement ``Context.flush`` ([#158](https://github.com/googleapis/python-ndb/pull/158))","- Implement ``use_datastore`` flag. ([#155](https://github.com/googleapis/python-ndb/pull/155))","- Implement ``tasklets.toplevel``. ([#157](https://github.com/googleapis/python-ndb/pull/157))","- Add RedisCache implementation of global cache ([#150](https://github.com/googleapis/python-ndb/pull/150))","- Implement Global Cache ([#148](https://github.com/googleapis/python-ndb/pull/148))","- ndb.Expando properties load and save ([#117](https://github.com/googleapis/python-ndb/pull/117))","- Implement cache policy. ([#116](https://github.com/googleapis/python-ndb/pull/116))","","### Documentation","- Fix Kokoro publish-docs job ([#153](https://github.com/googleapis/python-ndb/pull/153))","- Update Migration Notes. ([#152](https://github.com/googleapis/python-ndb/pull/152))","- Add `project_urls` for pypi page ([#144](https://github.com/googleapis/python-ndb/pull/144))","- Fix `TRAMPOLINE_BUILD_FILE` in docs/common.cfg. ([#143](https://github.com/googleapis/python-ndb/pull/143))","- Add kokoro docs job to publish to googleapis.dev. ([#142](https://github.com/googleapis/python-ndb/pull/142))","- Initial version of migration guide ([#121](https://github.com/googleapis/python-ndb/pull/121))","- Add spellcheck sphinx extension to docs build process ([#123](https://github.com/googleapis/python-ndb/pull/123))","","### Internal / Testing Changes","- Clean up usage of `object.__new__` and mocks for `Model` in unit tests ([#177](https://github.com/googleapis/python-ndb/pull/177))","- Prove tasklets can be Python 2.7 and 3.7 compatible. ([#174](https://github.com/googleapis/python-ndb/pull/174))","- Discard src directory and fix flake8 failures ([#173](https://github.com/googleapis/python-ndb/pull/173))","- Add tests for `Model.__eq__()` ([#169](https://github.com/googleapis/python-ndb/pull/169))","- Remove skip flag accidentally left over ([#154](https://github.com/googleapis/python-ndb/pull/154))","- Try to get kokoro to add indexes for system tests ([#145](https://github.com/googleapis/python-ndb/pull/145))","- Add system test for PolyModel ([#133](https://github.com/googleapis/python-ndb/pull/133))","- Fix system test under Datastore Emulator. (Fixes [#118](https://github.com/googleapis/python-ndb/pull/118)) ([#119](https://github.com/googleapis/python-ndb/pull/119))","- Add unit tests for `_entity_from_ds_entity` expando support ([#120](https://github.com/googleapis/python-ndb/pull/120))","","## 0.0.1","","06-11-2019 16:30 PDT","","### Implementation Changes","- Query repeated structured properties. ([#103](https://github.com/googleapis/python-ndb/pull/103))","- Fix Structured Properties ([#102](https://github.com/googleapis/python-ndb/pull/102))","","### New Features","- Implement expando model ([#99](https://github.com/googleapis/python-ndb/pull/99))","- Model properties ([#96](https://github.com/googleapis/python-ndb/pull/96))","- Implemented tasklets.synctasklet ([#58](https://github.com/googleapis/python-ndb/pull/58))","- Implement LocalStructuredProperty ([#93](https://github.com/googleapis/python-ndb/pull/93))","- Implement hooks. ([#95](https://github.com/googleapis/python-ndb/pull/95))","- Three easy Model methods. ([#94](https://github.com/googleapis/python-ndb/pull/94))","- Model.get or insert ([#92](https://github.com/googleapis/python-ndb/pull/92))","- Implement ``Model.get_by_id`` and ``Model.get_by_id_async``.","- Implement ``Model.allocate_ids`` and ``Model.allocate_ids_async``.","- Implement ``Query.fetch_page`` and ``Query.fetch_page_async``.","- Implement ``Query.count`` and ``Query.count_async``","- Implement ``Query.get`` and ``Query.get_async``.","","### Documentation","- update sphinx version and eliminate all warnings ([#105](https://github.com/googleapis/python-ndb/pull/105))","","## 0.0.1dev1","","Initial development release of NDB client library."],"stylingDirectives":[[[0,11,"pl-mh"],[2,11,"pl-en"]],[],[[0,1,"pl-s"],[13,14,"pl-s"],[14,15,"pl-s"],[15,16,"pl-en"],[16,17,"pl-s"]],[],[[0,1,"pl-s"],[1,2,"pl-en"],[2,3,"pl-s"],[5,55,"pl-corl"]],[],[[0,132,"pl-mh"],[3,132,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,118,"pl-corl"],[118,119,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[31,36,"pl-s"],[32,36,"pl-corl"],[39,40,"pl-s"],[80,81,"pl-s"],[81,82,"pl-s"],[82,179,"pl-corl"],[179,180,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[39,40,"pl-s"],[40,45,"pl-s"],[41,45,"pl-corl"],[45,46,"pl-s"],[46,47,"pl-s"],[47,99,"pl-corl"],[99,100,"pl-s"],[103,104,"pl-s"],[111,112,"pl-s"],[112,113,"pl-s"],[113,201,"pl-corl"],[201,202,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[46,47,"pl-s"],[47,52,"pl-s"],[48,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,106,"pl-corl"],[106,107,"pl-s"],[110,111,"pl-s"],[118,119,"pl-s"],[119,120,"pl-s"],[120,208,"pl-corl"],[208,209,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[22,23,"pl-s"],[23,27,"pl-s"],[24,27,"pl-corl"],[27,28,"pl-s"],[28,29,"pl-s"],[29,80,"pl-corl"],[80,81,"pl-s"],[84,85,"pl-s"],[92,93,"pl-s"],[93,94,"pl-s"],[94,182,"pl-corl"],[182,183,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[9,11,"pl-s"],[65,66,"pl-s"],[66,70,"pl-s"],[67,70,"pl-corl"],[70,71,"pl-s"],[71,72,"pl-s"],[72,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,225,"pl-corl"],[225,226,"pl-s"]],[[0,1,"pl-v"],[22,23,"pl-s"],[23,27,"pl-s"],[24,27,"pl-corl"],[27,28,"pl-s"],[28,29,"pl-s"],[29,80,"pl-corl"],[80,81,"pl-s"],[83,84,"pl-s"],[84,88,"pl-s"],[85,88,"pl-corl"],[88,89,"pl-s"],[89,90,"pl-s"],[90,141,"pl-corl"],[141,142,"pl-s"],[145,146,"pl-s"],[153,154,"pl-s"],[154,155,"pl-s"],[155,243,"pl-corl"],[243,244,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,118,"pl-corl"],[118,119,"pl-s"],[122,123,"pl-s"],[130,131,"pl-s"],[131,132,"pl-s"],[132,220,"pl-corl"],[220,221,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[58,59,"pl-s"],[59,63,"pl-s"],[60,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,116,"pl-corl"],[116,117,"pl-s"],[120,121,"pl-s"],[128,129,"pl-s"],[129,130,"pl-s"],[130,218,"pl-corl"],[218,219,"pl-s"]],[[0,1,"pl-v"],[57,58,"pl-s"],[58,62,"pl-s"],[59,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,217,"pl-corl"],[217,218,"pl-s"]],[[0,1,"pl-v"],[55,56,"pl-s"],[56,60,"pl-s"],[57,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,113,"pl-corl"],[113,114,"pl-s"],[117,118,"pl-s"],[125,126,"pl-s"],[126,127,"pl-s"],[127,215,"pl-corl"],[215,216,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[57,58,"pl-s"],[58,62,"pl-s"],[59,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,217,"pl-corl"],[217,218,"pl-s"]],[[0,1,"pl-v"],[19,20,"pl-s"],[20,24,"pl-s"],[21,24,"pl-corl"],[24,25,"pl-s"],[25,26,"pl-s"],[26,77,"pl-corl"],[77,78,"pl-s"],[81,82,"pl-s"],[89,90,"pl-s"],[90,91,"pl-s"],[91,179,"pl-corl"],[179,180,"pl-s"]],[[0,1,"pl-v"],[35,37,"pl-s"],[44,46,"pl-s"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,106,"pl-corl"],[106,107,"pl-s"],[110,111,"pl-s"],[118,119,"pl-s"],[119,120,"pl-s"],[120,208,"pl-corl"],[208,209,"pl-s"]],[[0,1,"pl-v"],[46,47,"pl-s"],[47,51,"pl-s"],[48,51,"pl-corl"],[51,52,"pl-s"],[52,53,"pl-s"],[53,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,206,"pl-corl"],[206,207,"pl-s"]],[[0,1,"pl-v"],[39,40,"pl-s"],[40,44,"pl-s"],[41,44,"pl-corl"],[44,45,"pl-s"],[45,46,"pl-s"],[46,97,"pl-corl"],[97,98,"pl-s"],[101,102,"pl-s"],[109,110,"pl-s"],[110,111,"pl-s"],[111,199,"pl-corl"],[199,200,"pl-s"]],[[0,1,"pl-v"],[58,59,"pl-s"],[59,63,"pl-s"],[60,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,116,"pl-corl"],[116,117,"pl-s"],[120,121,"pl-s"],[128,129,"pl-s"],[129,130,"pl-s"],[130,218,"pl-corl"],[218,219,"pl-s"]],[[0,1,"pl-v"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,93,"pl-corl"],[93,94,"pl-s"],[97,98,"pl-s"],[105,106,"pl-s"],[106,107,"pl-s"],[107,195,"pl-corl"],[195,196,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,106,"pl-corl"],[106,107,"pl-s"],[110,111,"pl-s"],[118,119,"pl-s"],[119,120,"pl-s"],[120,208,"pl-corl"],[208,209,"pl-s"]],[[0,1,"pl-v"],[74,75,"pl-s"],[75,79,"pl-s"],[76,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,132,"pl-corl"],[132,133,"pl-s"],[136,137,"pl-s"],[137,141,"pl-s"],[138,141,"pl-corl"],[141,142,"pl-s"],[142,143,"pl-s"],[143,194,"pl-corl"],[194,195,"pl-s"],[198,199,"pl-s"],[206,207,"pl-s"],[207,208,"pl-s"],[208,296,"pl-corl"],[296,297,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[4,6,"pl-s"],[10,12,"pl-s"],[13,15,"pl-s"],[68,69,"pl-s"],[69,73,"pl-s"],[70,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,126,"pl-corl"],[126,127,"pl-s"],[130,131,"pl-s"],[138,139,"pl-s"],[139,140,"pl-s"],[140,228,"pl-corl"],[228,229,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[35,39,"pl-s"],[36,39,"pl-corl"],[39,40,"pl-s"],[40,41,"pl-s"],[41,92,"pl-corl"],[92,93,"pl-s"],[96,97,"pl-s"],[104,105,"pl-s"],[105,106,"pl-s"],[106,194,"pl-corl"],[194,195,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,38,"pl-s"],[35,38,"pl-corl"],[38,39,"pl-s"],[39,40,"pl-s"],[40,91,"pl-corl"],[91,92,"pl-s"],[95,96,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,193,"pl-corl"],[193,194,"pl-s"]],[[0,1,"pl-v"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,93,"pl-corl"],[93,94,"pl-s"],[97,98,"pl-s"],[105,106,"pl-s"],[106,107,"pl-s"],[107,195,"pl-corl"],[195,196,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,118,"pl-corl"],[118,119,"pl-s"],[122,123,"pl-s"],[130,131,"pl-s"],[131,132,"pl-s"],[132,220,"pl-corl"],[220,221,"pl-s"],[231,232,"pl-s"],[232,236,"pl-s"],[233,236,"pl-corl"],[236,237,"pl-s"],[237,238,"pl-s"],[238,289,"pl-corl"],[289,290,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[9,11,"pl-s"],[40,41,"pl-s"],[41,45,"pl-s"],[42,45,"pl-corl"],[45,46,"pl-s"],[46,47,"pl-s"],[47,98,"pl-corl"],[98,99,"pl-s"],[102,103,"pl-s"],[110,111,"pl-s"],[111,112,"pl-s"],[112,200,"pl-corl"],[200,201,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[77,78,"pl-s"],[78,82,"pl-s"],[79,82,"pl-corl"],[82,83,"pl-s"],[83,84,"pl-s"],[84,135,"pl-corl"],[135,136,"pl-s"],[139,140,"pl-s"],[147,148,"pl-s"],[148,149,"pl-s"],[149,237,"pl-corl"],[237,238,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[20,21,"pl-s"],[21,25,"pl-s"],[22,25,"pl-corl"],[25,26,"pl-s"],[26,27,"pl-s"],[27,78,"pl-corl"],[78,79,"pl-s"],[82,83,"pl-s"],[90,91,"pl-s"],[91,92,"pl-s"],[92,180,"pl-corl"],[180,181,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,103,"pl-corl"],[103,104,"pl-s"],[107,108,"pl-s"],[115,116,"pl-s"],[116,117,"pl-s"],[117,205,"pl-corl"],[205,206,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[47,48,"pl-s"],[48,52,"pl-s"],[49,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,207,"pl-corl"],[207,208,"pl-s"],[218,219,"pl-s"],[219,223,"pl-s"],[220,223,"pl-corl"],[223,224,"pl-s"],[224,225,"pl-s"],[225,276,"pl-corl"],[276,277,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[57,58,"pl-s"],[58,62,"pl-s"],[59,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,217,"pl-corl"],[217,218,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,108,"pl-corl"],[108,109,"pl-s"],[112,113,"pl-s"],[120,121,"pl-s"],[121,122,"pl-s"],[122,210,"pl-corl"],[210,211,"pl-s"],[221,222,"pl-s"],[222,226,"pl-s"],[223,226,"pl-corl"],[226,227,"pl-s"],[227,228,"pl-s"],[228,279,"pl-corl"],[279,280,"pl-s"]],[],[[0,89,"pl-mh"],[3,89,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,75,"pl-corl"],[75,76,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[38,39,"pl-s"],[39,43,"pl-s"],[40,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,96,"pl-corl"],[96,97,"pl-s"],[100,101,"pl-s"],[108,109,"pl-s"],[109,110,"pl-s"],[110,198,"pl-corl"],[198,199,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[9,11,"pl-s"],[58,59,"pl-s"],[59,63,"pl-s"],[60,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,116,"pl-corl"],[116,117,"pl-s"],[120,121,"pl-s"],[128,129,"pl-s"],[129,130,"pl-s"],[130,218,"pl-corl"],[218,219,"pl-s"]],[],[[0,90,"pl-mh"],[3,90,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,76,"pl-corl"],[76,77,"pl-s"]],[],[],[[0,22,"pl-mh"],[4,22,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[17,19,"pl-s"]],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[17,19,"pl-s"],[54,58,"pl-c1"],[55,57,"pl-k"],[67,68,"pl-s"],[75,76,"pl-s"],[76,77,"pl-s"],[77,165,"pl-corl"],[165,166,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[70,71,"pl-s"],[78,79,"pl-s"],[79,80,"pl-s"],[80,168,"pl-corl"],[168,169,"pl-s"]],[[0,1,"pl-v"],[23,24,"pl-s"],[31,32,"pl-s"],[32,33,"pl-s"],[33,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[36,37,"pl-s"],[44,45,"pl-s"],[45,46,"pl-s"],[46,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[42,43,"pl-s"],[43,44,"pl-s"],[44,132,"pl-corl"],[132,133,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[33,34,"pl-s"],[34,35,"pl-s"],[35,123,"pl-corl"],[123,124,"pl-s"]],[],[[0,92,"pl-mh"],[3,92,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,78,"pl-corl"],[78,79,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[25,26,"pl-s"],[33,34,"pl-s"],[34,35,"pl-s"],[35,123,"pl-corl"],[123,124,"pl-s"]],[[0,1,"pl-v"],[27,28,"pl-s"],[28,32,"pl-s"],[29,32,"pl-corl"],[32,33,"pl-s"],[33,34,"pl-s"],[34,85,"pl-corl"],[85,86,"pl-s"],[89,90,"pl-s"],[97,98,"pl-s"],[98,99,"pl-s"],[99,187,"pl-corl"],[187,188,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[10,12,"pl-s"],[75,76,"pl-s"],[76,80,"pl-s"],[77,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,133,"pl-corl"],[133,134,"pl-s"],[137,138,"pl-s"],[145,146,"pl-s"],[146,147,"pl-s"],[147,235,"pl-corl"],[235,236,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[72,73,"pl-s"],[73,77,"pl-s"],[74,77,"pl-corl"],[77,78,"pl-s"],[78,79,"pl-s"],[79,130,"pl-corl"],[130,131,"pl-s"],[134,135,"pl-s"],[142,143,"pl-s"],[143,144,"pl-s"],[144,232,"pl-corl"],[232,233,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,118,"pl-corl"],[118,119,"pl-s"],[122,123,"pl-s"],[130,131,"pl-s"],[131,132,"pl-s"],[132,220,"pl-corl"],[220,221,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[12,14,"pl-s"],[69,70,"pl-s"],[70,74,"pl-s"],[71,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,127,"pl-corl"],[127,128,"pl-s"],[131,132,"pl-s"],[139,140,"pl-s"],[140,141,"pl-s"],[141,229,"pl-corl"],[229,230,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[17,19,"pl-s"],[73,74,"pl-s"],[74,78,"pl-s"],[75,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,131,"pl-corl"],[131,132,"pl-s"],[135,136,"pl-s"],[143,144,"pl-s"],[144,145,"pl-s"],[145,233,"pl-corl"],[233,234,"pl-s"],[244,245,"pl-s"],[245,249,"pl-s"],[246,249,"pl-corl"],[249,250,"pl-s"],[250,251,"pl-s"],[251,302,"pl-corl"],[302,303,"pl-s"]],[[0,1,"pl-v"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,100,"pl-corl"],[100,101,"pl-s"],[104,105,"pl-s"],[112,113,"pl-s"],[113,114,"pl-s"],[114,202,"pl-corl"],[202,203,"pl-s"]],[[0,1,"pl-v"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,101,"pl-corl"],[101,102,"pl-s"],[105,106,"pl-s"],[113,114,"pl-s"],[114,115,"pl-s"],[115,203,"pl-corl"],[203,204,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[11,13,"pl-s"],[71,72,"pl-s"],[72,76,"pl-s"],[73,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,129,"pl-corl"],[129,130,"pl-s"],[133,134,"pl-s"],[141,142,"pl-s"],[142,143,"pl-s"],[143,231,"pl-corl"],[231,232,"pl-s"]],[[0,1,"pl-v"],[2,4,"pl-s"],[13,15,"pl-s"],[47,48,"pl-s"],[48,52,"pl-s"],[49,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,207,"pl-corl"],[207,208,"pl-s"]],[],[[0,92,"pl-mh"],[3,92,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,78,"pl-corl"],[78,79,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,101,"pl-corl"],[101,102,"pl-s"],[105,106,"pl-s"],[113,114,"pl-s"],[114,115,"pl-s"],[115,203,"pl-corl"],[203,204,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[39,40,"pl-s"],[40,44,"pl-s"],[41,44,"pl-corl"],[44,45,"pl-s"],[45,46,"pl-s"],[46,101,"pl-corl"],[101,102,"pl-s"],[105,106,"pl-s"],[113,114,"pl-s"],[114,115,"pl-s"],[115,207,"pl-corl"],[207,208,"pl-s"],[218,219,"pl-s"],[219,223,"pl-s"],[220,223,"pl-corl"],[223,224,"pl-s"],[224,225,"pl-s"],[225,280,"pl-corl"],[280,281,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[31,32,"pl-s"],[32,36,"pl-s"],[33,36,"pl-corl"],[36,37,"pl-s"],[37,38,"pl-s"],[38,93,"pl-corl"],[93,94,"pl-s"],[97,98,"pl-s"],[105,106,"pl-s"],[106,107,"pl-s"],[107,199,"pl-corl"],[199,200,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[24,25,"pl-s"],[25,44,"pl-c1"],[44,45,"pl-s"],[47,48,"pl-s"],[48,52,"pl-s"],[49,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,109,"pl-corl"],[109,110,"pl-s"],[113,114,"pl-s"],[121,122,"pl-s"],[122,123,"pl-s"],[123,215,"pl-corl"],[215,216,"pl-s"],[226,227,"pl-s"],[227,231,"pl-s"],[228,231,"pl-corl"],[231,232,"pl-s"],[232,233,"pl-s"],[233,288,"pl-corl"],[288,289,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[55,56,"pl-s"],[56,60,"pl-s"],[57,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,117,"pl-corl"],[117,118,"pl-s"],[121,122,"pl-s"],[129,130,"pl-s"],[130,131,"pl-s"],[131,223,"pl-corl"],[223,224,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,114,"pl-corl"],[114,115,"pl-s"],[118,119,"pl-s"],[126,127,"pl-s"],[127,128,"pl-s"],[128,220,"pl-corl"],[220,221,"pl-s"],[231,232,"pl-s"],[232,236,"pl-s"],[233,236,"pl-corl"],[236,237,"pl-s"],[237,238,"pl-s"],[238,293,"pl-corl"],[293,294,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[9,11,"pl-s"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,110,"pl-corl"],[110,111,"pl-s"],[114,115,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,216,"pl-corl"],[216,217,"pl-s"]],[],[[0,96,"pl-mh"],[3,96,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,82,"pl-corl"],[82,83,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,211,"pl-corl"],[211,212,"pl-s"],[222,223,"pl-s"],[223,227,"pl-s"],[224,227,"pl-corl"],[227,228,"pl-s"],[228,229,"pl-s"],[229,284,"pl-corl"],[284,285,"pl-s"]],[[0,1,"pl-v"],[69,70,"pl-s"],[70,74,"pl-s"],[71,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,131,"pl-corl"],[131,132,"pl-s"],[135,136,"pl-s"],[143,144,"pl-s"],[144,145,"pl-s"],[145,237,"pl-corl"],[237,238,"pl-s"],[248,249,"pl-s"],[249,253,"pl-s"],[250,253,"pl-corl"],[253,254,"pl-s"],[254,255,"pl-s"],[255,310,"pl-corl"],[310,311,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[],[[0,95,"pl-mh"],[3,95,"pl-en"],[3,4,"pl-s"],[10,11,"pl-s"],[11,12,"pl-s"],[12,81,"pl-corl"],[81,82,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,211,"pl-corl"],[211,212,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[67,68,"pl-s"],[68,72,"pl-s"],[69,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,129,"pl-corl"],[129,130,"pl-s"],[133,134,"pl-s"],[141,142,"pl-s"],[142,143,"pl-s"],[143,235,"pl-corl"],[235,236,"pl-s"],[246,247,"pl-s"],[247,251,"pl-s"],[248,251,"pl-corl"],[251,252,"pl-s"],[252,253,"pl-s"],[253,308,"pl-corl"],[308,309,"pl-s"]],[[0,1,"pl-v"],[69,70,"pl-s"],[70,74,"pl-s"],[71,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,131,"pl-corl"],[131,132,"pl-s"],[135,136,"pl-s"],[143,144,"pl-s"],[144,145,"pl-s"],[145,237,"pl-corl"],[237,238,"pl-s"],[248,249,"pl-s"],[249,253,"pl-s"],[250,253,"pl-corl"],[253,254,"pl-s"],[254,255,"pl-s"],[255,310,"pl-corl"],[310,311,"pl-s"]],[[0,1,"pl-v"],[75,76,"pl-s"],[76,80,"pl-s"],[77,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,137,"pl-corl"],[137,138,"pl-s"],[141,142,"pl-s"],[149,150,"pl-s"],[150,151,"pl-s"],[151,243,"pl-corl"],[243,244,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[55,56,"pl-s"],[56,60,"pl-s"],[57,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,117,"pl-corl"],[117,118,"pl-s"],[121,122,"pl-s"],[129,130,"pl-s"],[130,131,"pl-s"],[131,223,"pl-corl"],[223,224,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,122,"pl-corl"],[122,123,"pl-s"],[126,127,"pl-s"],[134,135,"pl-s"],[135,136,"pl-s"],[136,228,"pl-corl"],[228,229,"pl-s"],[239,240,"pl-s"],[240,244,"pl-s"],[241,244,"pl-corl"],[244,245,"pl-s"],[245,246,"pl-s"],[246,301,"pl-corl"],[301,302,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,122,"pl-corl"],[122,123,"pl-s"],[126,127,"pl-s"],[134,135,"pl-s"],[135,136,"pl-s"],[136,228,"pl-corl"],[228,229,"pl-s"],[239,240,"pl-s"],[240,244,"pl-s"],[241,244,"pl-corl"],[244,245,"pl-s"],[245,246,"pl-s"],[246,301,"pl-corl"],[301,302,"pl-s"]],[[0,1,"pl-v"],[51,52,"pl-s"],[52,56,"pl-s"],[53,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,113,"pl-corl"],[113,114,"pl-s"],[117,118,"pl-s"],[125,126,"pl-s"],[126,127,"pl-s"],[127,219,"pl-corl"],[219,220,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,47,"pl-c1"],[47,48,"pl-s"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[[0,1,"pl-v"],[44,45,"pl-s"],[45,49,"pl-s"],[46,49,"pl-corl"],[49,50,"pl-s"],[50,51,"pl-s"],[51,106,"pl-corl"],[106,107,"pl-s"],[110,111,"pl-s"],[118,119,"pl-s"],[119,120,"pl-s"],[120,212,"pl-corl"],[212,213,"pl-s"],[223,224,"pl-s"],[224,228,"pl-s"],[225,228,"pl-corl"],[228,229,"pl-s"],[229,230,"pl-s"],[230,285,"pl-corl"],[285,286,"pl-s"]],[[0,1,"pl-v"],[36,37,"pl-s"],[37,41,"pl-s"],[38,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,98,"pl-corl"],[98,99,"pl-s"],[102,103,"pl-s"],[110,111,"pl-s"],[111,112,"pl-s"],[112,204,"pl-corl"],[204,205,"pl-s"],[215,216,"pl-s"],[216,220,"pl-s"],[217,220,"pl-corl"],[220,221,"pl-s"],[221,222,"pl-s"],[222,277,"pl-corl"],[277,278,"pl-s"]],[[0,1,"pl-v"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[119,120,"pl-s"],[120,121,"pl-s"],[121,213,"pl-corl"],[213,214,"pl-s"],[224,225,"pl-s"],[225,229,"pl-s"],[226,229,"pl-corl"],[229,230,"pl-s"],[230,231,"pl-s"],[231,286,"pl-corl"],[286,287,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,46,"pl-s"],[43,46,"pl-corl"],[46,47,"pl-s"],[47,48,"pl-s"],[48,103,"pl-corl"],[103,104,"pl-s"],[107,108,"pl-s"],[115,116,"pl-s"],[116,117,"pl-s"],[117,209,"pl-corl"],[209,210,"pl-s"],[220,221,"pl-s"],[221,225,"pl-s"],[222,225,"pl-corl"],[225,226,"pl-s"],[226,227,"pl-s"],[227,282,"pl-corl"],[282,283,"pl-s"]],[[0,1,"pl-v"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[119,120,"pl-s"],[120,121,"pl-s"],[121,213,"pl-corl"],[213,214,"pl-s"],[224,225,"pl-s"],[225,229,"pl-s"],[226,229,"pl-corl"],[229,230,"pl-s"],[230,231,"pl-s"],[231,286,"pl-corl"],[286,287,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,221,"pl-corl"],[221,222,"pl-s"],[232,233,"pl-s"],[233,237,"pl-s"],[234,237,"pl-corl"],[237,238,"pl-s"],[238,239,"pl-s"],[239,294,"pl-corl"],[294,295,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[15,16,"pl-s"],[16,20,"pl-c1"],[20,21,"pl-s"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,221,"pl-corl"],[221,222,"pl-s"],[232,233,"pl-s"],[233,237,"pl-s"],[234,237,"pl-corl"],[237,238,"pl-s"],[238,239,"pl-s"],[239,294,"pl-corl"],[294,295,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,46,"pl-s"],[43,46,"pl-corl"],[46,47,"pl-s"],[47,48,"pl-s"],[48,103,"pl-corl"],[103,104,"pl-s"],[107,108,"pl-s"],[115,116,"pl-s"],[116,117,"pl-s"],[117,209,"pl-corl"],[209,210,"pl-s"],[220,221,"pl-s"],[221,225,"pl-s"],[222,225,"pl-corl"],[225,226,"pl-s"],[226,227,"pl-s"],[227,282,"pl-corl"],[282,283,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,87,"pl-corl"],[87,88,"pl-s"],[91,92,"pl-s"],[99,100,"pl-s"],[100,101,"pl-s"],[101,193,"pl-corl"],[193,194,"pl-s"],[204,205,"pl-s"],[205,209,"pl-s"],[206,209,"pl-corl"],[209,210,"pl-s"],[210,211,"pl-s"],[211,266,"pl-corl"],[266,267,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,122,"pl-corl"],[122,123,"pl-s"],[126,127,"pl-s"],[134,135,"pl-s"],[135,136,"pl-s"],[136,228,"pl-corl"],[228,229,"pl-s"]],[[0,1,"pl-v"],[15,16,"pl-s"],[16,30,"pl-c1"],[30,31,"pl-s"],[46,47,"pl-s"],[47,51,"pl-s"],[48,51,"pl-corl"],[51,52,"pl-s"],[52,53,"pl-s"],[53,108,"pl-corl"],[108,109,"pl-s"],[112,113,"pl-s"],[120,121,"pl-s"],[121,122,"pl-s"],[122,214,"pl-corl"],[214,215,"pl-s"],[225,226,"pl-s"],[226,230,"pl-s"],[227,230,"pl-corl"],[230,231,"pl-s"],[231,232,"pl-s"],[232,287,"pl-corl"],[287,288,"pl-s"]],[[0,1,"pl-v"],[75,76,"pl-s"],[76,80,"pl-s"],[77,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,137,"pl-corl"],[137,138,"pl-s"],[141,142,"pl-s"],[149,150,"pl-s"],[150,151,"pl-s"],[151,243,"pl-corl"],[243,244,"pl-s"]],[[0,1,"pl-v"],[14,15,"pl-s"],[15,32,"pl-c1"],[32,33,"pl-s"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,97,"pl-corl"],[97,98,"pl-s"],[101,102,"pl-s"],[109,110,"pl-s"],[110,111,"pl-s"],[111,203,"pl-corl"],[203,204,"pl-s"],[214,215,"pl-s"],[215,219,"pl-s"],[216,219,"pl-corl"],[219,220,"pl-s"],[220,221,"pl-s"],[221,276,"pl-corl"],[276,277,"pl-s"]],[[0,1,"pl-v"],[58,59,"pl-s"],[59,63,"pl-s"],[60,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,120,"pl-corl"],[120,121,"pl-s"],[124,125,"pl-s"],[132,133,"pl-s"],[133,134,"pl-s"],[134,226,"pl-corl"],[226,227,"pl-s"],[237,238,"pl-s"],[238,242,"pl-s"],[239,242,"pl-corl"],[242,243,"pl-s"],[243,244,"pl-s"],[244,299,"pl-corl"],[299,300,"pl-s"]],[[0,1,"pl-v"],[10,11,"pl-s"],[11,14,"pl-c1"],[14,15,"pl-s"],[33,34,"pl-s"],[34,49,"pl-c1"],[49,50,"pl-s"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,114,"pl-corl"],[114,115,"pl-s"],[118,119,"pl-s"],[126,127,"pl-s"],[127,128,"pl-s"],[128,220,"pl-corl"],[220,221,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,110,"pl-corl"],[110,111,"pl-s"],[114,115,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,216,"pl-corl"],[216,217,"pl-s"],[227,228,"pl-s"],[228,232,"pl-s"],[229,232,"pl-corl"],[232,233,"pl-s"],[233,234,"pl-s"],[234,289,"pl-corl"],[289,290,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,52,"pl-s"],[49,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,109,"pl-corl"],[109,110,"pl-s"],[113,114,"pl-s"],[121,122,"pl-s"],[122,123,"pl-s"],[123,215,"pl-corl"],[215,216,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[28,29,"pl-s"],[29,40,"pl-c1"],[40,41,"pl-s"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,211,"pl-corl"],[211,212,"pl-s"]],[[0,1,"pl-v"],[38,39,"pl-s"],[39,43,"pl-s"],[40,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,100,"pl-corl"],[100,101,"pl-s"],[104,105,"pl-s"],[112,113,"pl-s"],[113,114,"pl-s"],[114,206,"pl-corl"],[206,207,"pl-s"],[217,218,"pl-s"],[218,222,"pl-s"],[219,222,"pl-corl"],[222,223,"pl-s"],[223,224,"pl-s"],[224,279,"pl-corl"],[279,280,"pl-s"]],[[0,1,"pl-v"],[28,29,"pl-s"],[29,33,"pl-s"],[30,33,"pl-corl"],[33,34,"pl-s"],[34,35,"pl-s"],[35,90,"pl-corl"],[90,91,"pl-s"],[94,95,"pl-s"],[102,103,"pl-s"],[103,104,"pl-s"],[104,196,"pl-corl"],[196,197,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[86,87,"pl-s"],[87,91,"pl-s"],[88,91,"pl-corl"],[91,92,"pl-s"],[92,93,"pl-s"],[93,148,"pl-corl"],[148,149,"pl-s"],[152,153,"pl-s"],[160,161,"pl-s"],[161,162,"pl-s"],[162,254,"pl-corl"],[254,255,"pl-s"]],[[0,1,"pl-v"],[54,55,"pl-s"],[55,59,"pl-s"],[56,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,116,"pl-corl"],[116,117,"pl-s"],[120,121,"pl-s"],[128,129,"pl-s"],[129,130,"pl-s"],[130,222,"pl-corl"],[222,223,"pl-s"]],[[0,1,"pl-v"],[80,81,"pl-s"],[81,85,"pl-s"],[82,85,"pl-corl"],[85,86,"pl-s"],[86,87,"pl-s"],[87,142,"pl-corl"],[142,143,"pl-s"],[146,147,"pl-s"],[154,155,"pl-s"],[155,156,"pl-s"],[156,248,"pl-corl"],[248,249,"pl-s"],[259,260,"pl-s"],[260,264,"pl-s"],[261,264,"pl-corl"],[264,265,"pl-s"],[265,266,"pl-s"],[266,321,"pl-corl"],[321,322,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[41,42,"pl-s"],[42,46,"pl-s"],[43,46,"pl-corl"],[46,47,"pl-s"],[47,48,"pl-s"],[48,103,"pl-corl"],[103,104,"pl-s"],[107,108,"pl-s"],[115,116,"pl-s"],[116,117,"pl-s"],[117,209,"pl-corl"],[209,210,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,4,"pl-s"],[17,19,"pl-s"],[71,72,"pl-s"],[72,76,"pl-s"],[73,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,133,"pl-corl"],[133,134,"pl-s"],[137,138,"pl-s"],[145,146,"pl-s"],[146,147,"pl-s"],[147,239,"pl-corl"],[239,240,"pl-s"],[250,251,"pl-s"],[251,255,"pl-s"],[252,255,"pl-corl"],[255,256,"pl-s"],[256,257,"pl-s"],[257,312,"pl-corl"],[312,313,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,99,"pl-corl"],[99,100,"pl-s"],[103,104,"pl-s"],[111,112,"pl-s"],[112,113,"pl-s"],[113,205,"pl-corl"],[205,206,"pl-s"],[216,217,"pl-s"],[217,221,"pl-s"],[218,221,"pl-corl"],[221,222,"pl-s"],[222,223,"pl-s"],[223,278,"pl-corl"],[278,279,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,61,"pl-s"],[58,61,"pl-corl"],[61,62,"pl-s"],[62,63,"pl-s"],[63,118,"pl-corl"],[118,119,"pl-s"],[122,123,"pl-s"],[130,131,"pl-s"],[131,132,"pl-s"],[132,224,"pl-corl"],[224,225,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[2,3,"pl-s"],[3,51,"pl-c1"],[51,52,"pl-s"],[101,102,"pl-s"],[102,106,"pl-s"],[103,106,"pl-corl"],[106,107,"pl-s"],[107,108,"pl-s"],[108,163,"pl-corl"],[163,164,"pl-s"],[167,168,"pl-s"],[175,176,"pl-s"],[176,177,"pl-s"],[177,269,"pl-corl"],[269,270,"pl-s"],[280,281,"pl-s"],[281,285,"pl-s"],[282,285,"pl-corl"],[285,286,"pl-s"],[286,287,"pl-s"],[287,342,"pl-corl"],[342,343,"pl-s"]],[[0,1,"pl-v"],[39,40,"pl-s"],[40,44,"pl-s"],[41,44,"pl-corl"],[44,45,"pl-s"],[45,46,"pl-s"],[46,101,"pl-corl"],[101,102,"pl-s"],[105,106,"pl-s"],[113,114,"pl-s"],[114,115,"pl-s"],[115,207,"pl-corl"],[207,208,"pl-s"]],[[0,1,"pl-v"],[75,76,"pl-s"],[76,80,"pl-s"],[77,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,137,"pl-corl"],[137,138,"pl-s"],[141,142,"pl-s"],[149,150,"pl-s"],[150,151,"pl-s"],[151,243,"pl-corl"],[243,244,"pl-s"],[254,255,"pl-s"],[255,259,"pl-s"],[256,259,"pl-corl"],[259,260,"pl-s"],[260,261,"pl-s"],[261,316,"pl-corl"],[316,317,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[66,67,"pl-s"],[67,71,"pl-s"],[68,71,"pl-corl"],[71,72,"pl-s"],[72,73,"pl-s"],[73,128,"pl-corl"],[128,129,"pl-s"],[132,133,"pl-s"],[140,141,"pl-s"],[141,142,"pl-s"],[142,234,"pl-corl"],[234,235,"pl-s"]],[[0,1,"pl-v"],[47,48,"pl-s"],[48,52,"pl-s"],[49,52,"pl-corl"],[52,53,"pl-s"],[53,54,"pl-s"],[54,109,"pl-corl"],[109,110,"pl-s"],[112,113,"pl-s"],[120,121,"pl-s"],[121,122,"pl-s"],[122,214,"pl-corl"],[214,215,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,87,"pl-corl"],[87,88,"pl-s"],[91,92,"pl-s"],[99,100,"pl-s"],[100,101,"pl-s"],[101,193,"pl-corl"],[193,194,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[73,74,"pl-s"],[74,78,"pl-s"],[75,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,135,"pl-corl"],[135,136,"pl-s"],[139,140,"pl-s"],[147,148,"pl-s"],[148,149,"pl-s"],[149,241,"pl-corl"],[241,242,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,58,"pl-c1"],[58,59,"pl-s"],[75,76,"pl-s"],[76,80,"pl-s"],[77,80,"pl-corl"],[80,81,"pl-s"],[81,82,"pl-s"],[82,137,"pl-corl"],[137,138,"pl-s"],[141,142,"pl-s"],[149,150,"pl-s"],[150,151,"pl-s"],[151,243,"pl-corl"],[243,244,"pl-s"],[254,255,"pl-s"],[255,259,"pl-s"],[256,259,"pl-corl"],[259,260,"pl-s"],[260,261,"pl-s"],[261,316,"pl-corl"],[316,317,"pl-s"]],[[0,1,"pl-v"],[17,18,"pl-s"],[18,31,"pl-c1"],[31,32,"pl-s"],[67,68,"pl-s"],[68,72,"pl-s"],[69,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,129,"pl-corl"],[129,130,"pl-s"],[133,134,"pl-s"],[141,142,"pl-s"],[142,143,"pl-s"],[143,235,"pl-corl"],[235,236,"pl-s"],[246,247,"pl-s"],[247,251,"pl-s"],[248,251,"pl-corl"],[251,252,"pl-s"],[252,253,"pl-s"],[253,308,"pl-corl"],[308,309,"pl-s"]],[[0,1,"pl-v"],[12,13,"pl-s"],[13,22,"pl-c1"],[22,23,"pl-s"],[70,71,"pl-s"],[71,75,"pl-s"],[72,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,132,"pl-corl"],[132,133,"pl-s"],[136,137,"pl-s"],[144,145,"pl-s"],[145,146,"pl-s"],[146,238,"pl-corl"],[238,239,"pl-s"],[249,250,"pl-s"],[250,254,"pl-s"],[251,254,"pl-corl"],[254,255,"pl-s"],[255,256,"pl-s"],[256,311,"pl-corl"],[311,312,"pl-s"]],[],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,91,"pl-corl"],[91,92,"pl-s"],[95,96,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,197,"pl-corl"],[197,198,"pl-s"],[208,209,"pl-s"],[209,213,"pl-s"],[210,213,"pl-corl"],[213,214,"pl-s"],[214,215,"pl-s"],[215,270,"pl-corl"],[270,271,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,210,"pl-corl"],[210,211,"pl-s"],[221,222,"pl-s"],[222,226,"pl-s"],[223,226,"pl-corl"],[226,227,"pl-s"],[227,228,"pl-s"],[228,283,"pl-corl"],[283,284,"pl-s"]],[[0,1,"pl-v"],[27,28,"pl-s"],[28,47,"pl-c1"],[47,48,"pl-s"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,73,"pl-s"],[70,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,130,"pl-corl"],[130,131,"pl-s"],[134,135,"pl-s"],[142,143,"pl-s"],[143,144,"pl-s"],[144,236,"pl-corl"],[236,237,"pl-s"],[247,248,"pl-s"],[248,252,"pl-s"],[249,252,"pl-corl"],[252,253,"pl-s"],[253,254,"pl-s"],[254,309,"pl-corl"],[309,310,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[69,70,"pl-s"],[77,78,"pl-s"],[78,79,"pl-s"],[79,171,"pl-corl"],[171,172,"pl-s"],[182,183,"pl-s"],[183,187,"pl-s"],[184,187,"pl-corl"],[187,188,"pl-s"],[188,189,"pl-s"],[189,244,"pl-corl"],[244,245,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,221,"pl-corl"],[221,222,"pl-s"],[232,233,"pl-s"],[233,237,"pl-s"],[234,237,"pl-corl"],[237,238,"pl-s"],[238,239,"pl-s"],[239,294,"pl-corl"],[294,295,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[23,24,"pl-s"],[24,45,"pl-c1"],[45,46,"pl-s"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,110,"pl-corl"],[110,111,"pl-s"],[114,115,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,216,"pl-corl"],[216,217,"pl-s"],[227,228,"pl-s"],[228,232,"pl-s"],[229,232,"pl-corl"],[232,233,"pl-s"],[233,234,"pl-s"],[234,289,"pl-corl"],[289,290,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,61,"pl-s"],[58,61,"pl-corl"],[61,62,"pl-s"],[62,63,"pl-s"],[63,118,"pl-corl"],[118,119,"pl-s"],[122,123,"pl-s"],[130,131,"pl-s"],[131,132,"pl-s"],[132,224,"pl-corl"],[224,225,"pl-s"],[235,236,"pl-s"],[236,240,"pl-s"],[237,240,"pl-corl"],[240,241,"pl-s"],[241,242,"pl-s"],[242,297,"pl-corl"],[297,298,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[8,9,"pl-s"],[9,25,"pl-c1"],[25,26,"pl-s"],[58,59,"pl-s"],[59,63,"pl-s"],[60,63,"pl-corl"],[63,64,"pl-s"],[64,65,"pl-s"],[65,120,"pl-corl"],[120,121,"pl-s"],[124,125,"pl-s"],[132,133,"pl-s"],[133,134,"pl-s"],[134,226,"pl-corl"],[226,227,"pl-s"],[237,238,"pl-s"],[238,242,"pl-s"],[239,242,"pl-corl"],[242,243,"pl-s"],[243,244,"pl-s"],[244,299,"pl-corl"],[299,300,"pl-s"]],[[0,1,"pl-v"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,210,"pl-corl"],[210,211,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[69,70,"pl-s"],[70,74,"pl-s"],[71,74,"pl-corl"],[74,75,"pl-s"],[75,76,"pl-s"],[76,131,"pl-corl"],[131,132,"pl-s"],[135,136,"pl-s"],[143,144,"pl-s"],[144,145,"pl-s"],[145,237,"pl-corl"],[237,238,"pl-s"],[248,249,"pl-s"],[249,253,"pl-s"],[250,253,"pl-corl"],[253,254,"pl-s"],[254,255,"pl-s"],[255,310,"pl-corl"],[310,311,"pl-s"]],[[0,1,"pl-v"],[12,13,"pl-s"],[13,18,"pl-c1"],[18,19,"pl-s"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"],[240,241,"pl-s"],[241,245,"pl-s"],[242,245,"pl-corl"],[245,246,"pl-s"],[246,247,"pl-s"],[247,302,"pl-corl"],[302,303,"pl-s"]],[[0,1,"pl-v"],[13,14,"pl-s"],[14,21,"pl-c1"],[21,22,"pl-s"],[31,32,"pl-s"],[32,36,"pl-s"],[33,36,"pl-corl"],[36,37,"pl-s"],[37,38,"pl-s"],[38,93,"pl-corl"],[93,94,"pl-s"],[97,98,"pl-s"],[105,106,"pl-s"],[106,107,"pl-s"],[107,199,"pl-corl"],[199,200,"pl-s"],[210,211,"pl-s"],[211,215,"pl-s"],[212,215,"pl-corl"],[215,216,"pl-s"],[216,217,"pl-s"],[217,272,"pl-corl"],[272,273,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[112,116,"pl-s"],[113,116,"pl-corl"],[116,117,"pl-s"],[117,118,"pl-s"],[118,173,"pl-corl"],[173,174,"pl-s"],[177,178,"pl-s"],[185,186,"pl-s"],[186,187,"pl-s"],[187,279,"pl-corl"],[279,280,"pl-s"]],[[0,1,"pl-v"],[46,47,"pl-s"],[47,51,"pl-s"],[48,51,"pl-corl"],[51,52,"pl-s"],[52,53,"pl-s"],[53,108,"pl-corl"],[108,109,"pl-s"],[112,113,"pl-s"],[120,121,"pl-s"],[121,122,"pl-s"],[122,214,"pl-corl"],[214,215,"pl-s"],[225,226,"pl-s"],[226,230,"pl-s"],[227,230,"pl-corl"],[230,231,"pl-s"],[231,232,"pl-s"],[232,287,"pl-corl"],[287,288,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,111,"pl-corl"],[111,112,"pl-s"],[115,116,"pl-s"],[123,124,"pl-s"],[124,125,"pl-s"],[125,217,"pl-corl"],[217,218,"pl-s"],[228,229,"pl-s"],[229,233,"pl-s"],[230,233,"pl-corl"],[233,234,"pl-s"],[234,235,"pl-s"],[235,290,"pl-corl"],[290,291,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,26,"pl-c1"],[26,27,"pl-s"],[32,33,"pl-s"],[33,46,"pl-c1"],[46,47,"pl-s"],[70,71,"pl-s"],[71,75,"pl-s"],[72,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,132,"pl-corl"],[132,133,"pl-s"],[136,137,"pl-s"],[144,145,"pl-s"],[145,146,"pl-s"],[146,238,"pl-corl"],[238,239,"pl-s"],[249,250,"pl-s"],[250,254,"pl-s"],[251,254,"pl-corl"],[254,255,"pl-s"],[255,256,"pl-s"],[256,311,"pl-corl"],[311,312,"pl-s"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,70,"pl-s"],[67,70,"pl-corl"],[70,71,"pl-s"],[71,72,"pl-s"],[72,127,"pl-corl"],[127,128,"pl-s"],[131,132,"pl-s"],[139,140,"pl-s"],[140,141,"pl-s"],[141,233,"pl-corl"],[233,234,"pl-s"],[244,245,"pl-s"],[245,249,"pl-s"],[246,249,"pl-corl"],[249,250,"pl-s"],[250,251,"pl-s"],[251,306,"pl-corl"],[306,307,"pl-s"],[308,309,"pl-s"],[309,313,"pl-s"],[310,313,"pl-corl"],[313,314,"pl-s"],[314,315,"pl-s"],[315,370,"pl-corl"],[370,371,"pl-s"]],[[0,1,"pl-v"],[54,55,"pl-s"],[55,59,"pl-s"],[56,59,"pl-corl"],[59,60,"pl-s"],[60,61,"pl-s"],[61,116,"pl-corl"],[116,117,"pl-s"],[120,121,"pl-s"],[128,129,"pl-s"],[129,130,"pl-s"],[130,222,"pl-corl"],[222,223,"pl-s"],[233,234,"pl-s"],[234,238,"pl-s"],[235,238,"pl-corl"],[238,239,"pl-s"],[239,240,"pl-s"],[240,295,"pl-corl"],[295,296,"pl-s"],[297,298,"pl-s"],[298,302,"pl-s"],[299,302,"pl-corl"],[302,303,"pl-s"],[303,304,"pl-s"],[304,359,"pl-corl"],[359,360,"pl-s"]],[[0,1,"pl-v"],[10,11,"pl-s"],[11,21,"pl-c1"],[21,22,"pl-s"],[26,27,"pl-s"],[27,57,"pl-c1"],[57,58,"pl-s"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,122,"pl-corl"],[122,123,"pl-s"],[126,127,"pl-s"],[134,135,"pl-s"],[135,136,"pl-s"],[136,228,"pl-corl"],[228,229,"pl-s"],[239,240,"pl-s"],[240,244,"pl-s"],[241,244,"pl-corl"],[244,245,"pl-s"],[245,246,"pl-s"],[246,301,"pl-corl"],[301,302,"pl-s"]],[[0,1,"pl-v"],[8,9,"pl-s"],[9,17,"pl-c1"],[17,18,"pl-s"],[48,49,"pl-s"],[49,56,"pl-c1"],[56,57,"pl-s"],[59,60,"pl-s"],[60,64,"pl-s"],[61,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,121,"pl-corl"],[121,122,"pl-s"],[125,126,"pl-s"],[133,134,"pl-s"],[134,135,"pl-s"],[135,227,"pl-corl"],[227,228,"pl-s"],[238,239,"pl-s"],[239,243,"pl-s"],[240,243,"pl-corl"],[243,244,"pl-s"],[244,245,"pl-s"],[245,300,"pl-corl"],[300,301,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,91,"pl-corl"],[91,92,"pl-s"],[95,96,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,197,"pl-corl"],[197,198,"pl-s"],[208,209,"pl-s"],[209,213,"pl-s"],[210,213,"pl-corl"],[213,214,"pl-s"],[214,215,"pl-s"],[215,270,"pl-corl"],[270,271,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,97,"pl-corl"],[97,98,"pl-s"],[101,102,"pl-s"],[109,110,"pl-s"],[110,111,"pl-s"],[111,203,"pl-corl"],[203,204,"pl-s"],[214,215,"pl-s"],[215,219,"pl-s"],[216,219,"pl-corl"],[219,220,"pl-s"],[220,221,"pl-s"],[221,276,"pl-corl"],[276,277,"pl-s"]],[[0,1,"pl-v"],[72,73,"pl-s"],[73,77,"pl-s"],[74,77,"pl-corl"],[77,78,"pl-s"],[78,79,"pl-s"],[79,134,"pl-corl"],[134,135,"pl-s"],[138,139,"pl-s"],[146,147,"pl-s"],[147,148,"pl-s"],[148,240,"pl-corl"],[240,241,"pl-s"],[251,252,"pl-s"],[252,256,"pl-s"],[253,256,"pl-corl"],[256,257,"pl-s"],[257,258,"pl-s"],[258,313,"pl-corl"],[313,314,"pl-s"]],[[0,1,"pl-v"],[32,33,"pl-s"],[33,58,"pl-c1"],[58,59,"pl-s"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"],[240,241,"pl-s"],[241,245,"pl-s"],[242,245,"pl-corl"],[245,246,"pl-s"],[246,247,"pl-s"],[247,302,"pl-corl"],[302,303,"pl-s"]],[[0,1,"pl-v"],[39,40,"pl-s"],[40,44,"pl-s"],[41,44,"pl-corl"],[44,45,"pl-s"],[45,46,"pl-s"],[46,101,"pl-corl"],[101,102,"pl-s"],[105,106,"pl-s"],[113,114,"pl-s"],[114,115,"pl-s"],[115,207,"pl-corl"],[207,208,"pl-s"],[218,219,"pl-s"],[219,223,"pl-s"],[220,223,"pl-corl"],[223,224,"pl-s"],[224,225,"pl-s"],[225,280,"pl-corl"],[280,281,"pl-s"]],[[0,1,"pl-v"],[67,68,"pl-s"],[68,72,"pl-s"],[69,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,129,"pl-corl"],[129,130,"pl-s"],[133,134,"pl-s"],[141,142,"pl-s"],[142,143,"pl-s"],[143,235,"pl-corl"],[235,236,"pl-s"],[246,247,"pl-s"],[247,251,"pl-s"],[248,251,"pl-corl"],[251,252,"pl-s"],[252,253,"pl-s"],[253,308,"pl-corl"],[308,309,"pl-s"]],[[0,1,"pl-v"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[119,120,"pl-s"],[120,121,"pl-s"],[121,213,"pl-corl"],[213,214,"pl-s"],[224,225,"pl-s"],[225,229,"pl-s"],[226,229,"pl-corl"],[229,230,"pl-s"],[230,231,"pl-s"],[231,286,"pl-corl"],[286,287,"pl-s"]],[[0,1,"pl-v"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,110,"pl-corl"],[110,111,"pl-s"],[114,115,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,216,"pl-corl"],[216,217,"pl-s"]],[[0,1,"pl-v"],[22,23,"pl-s"],[23,33,"pl-c1"],[33,34,"pl-s"],[45,46,"pl-s"],[46,50,"pl-s"],[47,50,"pl-corl"],[50,51,"pl-s"],[51,52,"pl-s"],[52,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[119,120,"pl-s"],[120,121,"pl-s"],[121,213,"pl-corl"],[213,214,"pl-s"],[224,225,"pl-s"],[225,229,"pl-s"],[226,229,"pl-corl"],[229,230,"pl-s"],[230,231,"pl-s"],[231,286,"pl-corl"],[286,287,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,22,"pl-c1"],[22,23,"pl-s"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"],[240,241,"pl-s"],[241,245,"pl-s"],[242,245,"pl-corl"],[245,246,"pl-s"],[246,247,"pl-s"],[247,302,"pl-corl"],[302,303,"pl-s"]],[[0,1,"pl-v"],[48,49,"pl-s"],[49,53,"pl-s"],[50,53,"pl-corl"],[53,54,"pl-s"],[54,55,"pl-s"],[55,110,"pl-corl"],[110,111,"pl-s"],[114,115,"pl-s"],[122,123,"pl-s"],[123,124,"pl-s"],[124,216,"pl-corl"],[216,217,"pl-s"],[227,228,"pl-s"],[228,232,"pl-s"],[229,232,"pl-corl"],[232,233,"pl-s"],[233,234,"pl-s"],[234,289,"pl-corl"],[289,290,"pl-s"]],[[0,1,"pl-v"],[11,12,"pl-s"],[12,21,"pl-c1"],[21,22,"pl-s"],[33,34,"pl-s"],[34,47,"pl-c1"],[47,48,"pl-s"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"],[293,294,"pl-s"],[294,298,"pl-s"],[295,298,"pl-corl"],[298,299,"pl-s"],[299,300,"pl-s"],[300,355,"pl-corl"],[355,356,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[6,7,"pl-s"],[7,16,"pl-c1"],[16,17,"pl-s"],[30,31,"pl-s"],[31,46,"pl-c1"],[46,47,"pl-s"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,111,"pl-corl"],[111,112,"pl-s"],[115,116,"pl-s"],[123,124,"pl-s"],[124,125,"pl-s"],[125,217,"pl-corl"],[217,218,"pl-s"],[228,229,"pl-s"],[229,233,"pl-s"],[230,233,"pl-corl"],[233,234,"pl-s"],[234,235,"pl-s"],[235,290,"pl-corl"],[290,291,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,11,"pl-c1"],[11,12,"pl-s"],[26,27,"pl-s"],[27,38,"pl-c1"],[38,39,"pl-s"],[63,64,"pl-s"],[64,68,"pl-s"],[65,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,125,"pl-corl"],[125,126,"pl-s"],[129,130,"pl-s"],[137,138,"pl-s"],[138,139,"pl-s"],[139,231,"pl-corl"],[231,232,"pl-s"],[242,243,"pl-s"],[243,247,"pl-s"],[244,247,"pl-corl"],[247,248,"pl-s"],[248,249,"pl-s"],[249,304,"pl-corl"],[304,305,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[9,10,"pl-s"],[10,15,"pl-c1"],[15,16,"pl-s"],[20,21,"pl-s"],[21,24,"pl-c1"],[24,25,"pl-s"],[44,45,"pl-s"],[45,57,"pl-c1"],[57,58,"pl-s"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,122,"pl-corl"],[122,123,"pl-s"],[126,127,"pl-s"],[134,135,"pl-s"],[135,136,"pl-s"],[136,228,"pl-corl"],[228,229,"pl-s"],[239,240,"pl-s"],[240,244,"pl-s"],[241,244,"pl-corl"],[244,245,"pl-s"],[245,246,"pl-s"],[246,301,"pl-corl"],[301,302,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,14,"pl-c1"],[14,15,"pl-s"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,105,"pl-corl"],[105,106,"pl-s"],[109,110,"pl-s"],[117,118,"pl-s"],[118,119,"pl-s"],[119,211,"pl-corl"],[211,212,"pl-s"],[222,223,"pl-s"],[223,227,"pl-s"],[224,227,"pl-corl"],[227,228,"pl-s"],[228,229,"pl-s"],[229,284,"pl-corl"],[284,285,"pl-s"]],[[0,1,"pl-v"],[14,15,"pl-s"],[36,37,"pl-s"],[37,41,"pl-s"],[38,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,98,"pl-corl"],[98,99,"pl-s"],[102,103,"pl-s"],[110,111,"pl-s"],[111,112,"pl-s"],[112,204,"pl-corl"],[204,205,"pl-s"],[215,216,"pl-s"],[216,220,"pl-s"],[217,220,"pl-corl"],[220,221,"pl-s"],[221,222,"pl-s"],[222,277,"pl-corl"],[277,278,"pl-s"]],[[0,1,"pl-v"],[63,64,"pl-s"],[64,68,"pl-s"],[65,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,125,"pl-corl"],[125,126,"pl-s"],[129,130,"pl-s"],[137,138,"pl-s"],[138,139,"pl-s"],[139,231,"pl-corl"],[231,232,"pl-s"],[242,243,"pl-s"],[243,247,"pl-s"],[244,247,"pl-corl"],[247,248,"pl-s"],[248,249,"pl-s"],[249,304,"pl-corl"],[304,305,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[59,60,"pl-s"],[60,64,"pl-s"],[61,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,121,"pl-corl"],[121,122,"pl-s"],[125,126,"pl-s"],[133,134,"pl-s"],[134,135,"pl-s"],[135,227,"pl-corl"],[227,228,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,115,"pl-corl"],[115,116,"pl-s"],[119,120,"pl-s"],[127,128,"pl-s"],[128,129,"pl-s"],[129,221,"pl-corl"],[221,222,"pl-s"],[232,233,"pl-s"],[233,237,"pl-s"],[234,237,"pl-corl"],[237,238,"pl-s"],[238,239,"pl-s"],[239,294,"pl-corl"],[294,295,"pl-s"]],[[0,1,"pl-v"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,114,"pl-corl"],[114,115,"pl-s"],[118,119,"pl-s"],[126,127,"pl-s"],[127,128,"pl-s"],[128,220,"pl-corl"],[220,221,"pl-s"],[231,232,"pl-s"],[232,236,"pl-s"],[233,236,"pl-corl"],[236,237,"pl-s"],[237,238,"pl-s"],[238,293,"pl-corl"],[293,294,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[15,16,"pl-s"],[16,21,"pl-c1"],[21,22,"pl-s"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[[0,1,"pl-v"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,99,"pl-corl"],[99,100,"pl-s"],[103,104,"pl-s"],[111,112,"pl-s"],[112,113,"pl-s"],[113,205,"pl-corl"],[205,206,"pl-s"]],[[0,1,"pl-v"],[39,40,"pl-s"],[40,45,"pl-c1"],[45,46,"pl-s"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"],[240,241,"pl-s"],[241,245,"pl-s"],[242,245,"pl-corl"],[245,246,"pl-s"],[246,247,"pl-s"],[247,302,"pl-corl"],[302,303,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,12,"pl-mh"],[4,12,"pl-en"]],[],[[0,1,"pl-v"],[2,3,"pl-s"],[3,26,"pl-c1"],[26,27,"pl-s"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,91,"pl-corl"],[91,92,"pl-s"],[95,96,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,197,"pl-corl"],[197,198,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[62,63,"pl-s"],[63,67,"pl-s"],[64,67,"pl-corl"],[67,68,"pl-s"],[68,69,"pl-s"],[69,124,"pl-corl"],[124,125,"pl-s"],[128,129,"pl-s"],[136,137,"pl-s"],[137,138,"pl-s"],[138,230,"pl-corl"],[230,231,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,91,"pl-corl"],[91,92,"pl-s"],[95,96,"pl-s"],[103,104,"pl-s"],[104,105,"pl-s"],[105,197,"pl-corl"],[197,198,"pl-s"],[208,209,"pl-s"],[209,213,"pl-s"],[210,213,"pl-corl"],[213,214,"pl-s"],[214,215,"pl-s"],[215,270,"pl-corl"],[270,271,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,21,"pl-c1"],[21,23,"pl-s"],[71,72,"pl-s"],[72,76,"pl-s"],[73,76,"pl-corl"],[76,77,"pl-s"],[77,78,"pl-s"],[78,133,"pl-corl"],[133,134,"pl-s"],[137,138,"pl-s"],[145,146,"pl-s"],[146,147,"pl-s"],[147,239,"pl-corl"],[239,240,"pl-s"],[250,251,"pl-s"],[251,255,"pl-s"],[252,255,"pl-corl"],[255,256,"pl-s"],[256,257,"pl-s"],[257,312,"pl-corl"],[312,313,"pl-s"]],[[0,1,"pl-v"],[84,85,"pl-s"],[85,89,"pl-s"],[86,89,"pl-corl"],[89,90,"pl-s"],[90,91,"pl-s"],[91,146,"pl-corl"],[146,147,"pl-s"],[150,151,"pl-s"],[158,159,"pl-s"],[159,160,"pl-s"],[160,252,"pl-corl"],[252,253,"pl-s"],[263,264,"pl-s"],[264,268,"pl-s"],[265,268,"pl-corl"],[268,269,"pl-s"],[269,270,"pl-s"],[270,325,"pl-corl"],[325,326,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,112,"pl-corl"],[112,113,"pl-s"],[116,117,"pl-s"],[124,125,"pl-s"],[125,126,"pl-s"],[126,218,"pl-corl"],[218,219,"pl-s"],[229,230,"pl-s"],[230,234,"pl-s"],[231,234,"pl-corl"],[234,235,"pl-s"],[235,236,"pl-s"],[236,291,"pl-corl"],[291,292,"pl-s"]],[[0,1,"pl-v"],[73,74,"pl-s"],[74,78,"pl-s"],[75,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,135,"pl-corl"],[135,136,"pl-s"],[139,140,"pl-s"],[147,148,"pl-s"],[148,149,"pl-s"],[149,241,"pl-corl"],[241,242,"pl-s"],[252,253,"pl-s"],[253,257,"pl-s"],[254,257,"pl-corl"],[257,258,"pl-s"],[258,259,"pl-s"],[259,314,"pl-corl"],[314,315,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[68,69,"pl-s"],[69,73,"pl-s"],[70,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,130,"pl-corl"],[130,131,"pl-s"],[134,135,"pl-s"],[142,143,"pl-s"],[143,144,"pl-s"],[144,236,"pl-corl"],[236,237,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,87,"pl-corl"],[87,88,"pl-s"],[91,92,"pl-s"],[92,96,"pl-s"],[93,96,"pl-corl"],[96,97,"pl-s"],[97,98,"pl-s"],[98,153,"pl-corl"],[153,154,"pl-s"],[157,158,"pl-s"],[165,166,"pl-s"],[166,167,"pl-s"],[167,259,"pl-corl"],[259,260,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[10,19,"pl-c1"],[19,20,"pl-s"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,99,"pl-corl"],[99,100,"pl-s"],[103,104,"pl-s"],[111,112,"pl-s"],[112,113,"pl-s"],[113,205,"pl-corl"],[205,206,"pl-s"],[216,217,"pl-s"],[217,221,"pl-s"],[218,221,"pl-corl"],[221,222,"pl-s"],[222,223,"pl-s"],[223,278,"pl-corl"],[278,279,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,111,"pl-corl"],[111,112,"pl-s"],[115,116,"pl-s"],[123,124,"pl-s"],[124,125,"pl-s"],[125,217,"pl-corl"],[217,218,"pl-s"],[228,229,"pl-s"],[229,233,"pl-s"],[230,233,"pl-corl"],[233,234,"pl-s"],[234,235,"pl-s"],[235,290,"pl-corl"],[290,291,"pl-s"]],[[0,1,"pl-v"],[38,39,"pl-s"],[39,43,"pl-s"],[40,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,100,"pl-corl"],[100,101,"pl-s"],[104,105,"pl-s"],[112,113,"pl-s"],[113,114,"pl-s"],[114,206,"pl-corl"],[206,207,"pl-s"],[217,218,"pl-s"],[218,222,"pl-s"],[219,222,"pl-corl"],[222,223,"pl-s"],[223,224,"pl-s"],[224,279,"pl-corl"],[279,280,"pl-s"]],[[0,1,"pl-v"],[63,64,"pl-s"],[64,68,"pl-s"],[65,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,125,"pl-corl"],[125,126,"pl-s"],[129,130,"pl-s"],[137,138,"pl-s"],[138,139,"pl-s"],[139,231,"pl-corl"],[231,232,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,123,"pl-corl"],[123,124,"pl-s"],[127,128,"pl-s"],[135,136,"pl-s"],[136,137,"pl-s"],[137,229,"pl-corl"],[229,230,"pl-s"],[240,241,"pl-s"],[241,245,"pl-s"],[242,245,"pl-corl"],[245,246,"pl-s"],[246,247,"pl-s"],[247,302,"pl-corl"],[302,303,"pl-s"]],[[0,1,"pl-v"],[70,71,"pl-s"],[71,75,"pl-s"],[72,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,132,"pl-corl"],[132,133,"pl-s"],[136,137,"pl-s"],[144,145,"pl-s"],[145,146,"pl-s"],[146,238,"pl-corl"],[238,239,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,114,"pl-corl"],[114,115,"pl-s"],[118,119,"pl-s"],[126,127,"pl-s"],[127,128,"pl-s"],[128,220,"pl-corl"],[220,221,"pl-s"]],[[0,1,"pl-v"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,210,"pl-corl"],[210,211,"pl-s"],[221,222,"pl-s"],[222,226,"pl-s"],[223,226,"pl-corl"],[226,227,"pl-s"],[227,228,"pl-s"],[228,283,"pl-corl"],[283,284,"pl-s"]],[[0,1,"pl-v"],[38,39,"pl-s"],[39,43,"pl-s"],[40,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,100,"pl-corl"],[100,101,"pl-s"],[104,105,"pl-s"],[112,113,"pl-s"],[113,114,"pl-s"],[114,206,"pl-corl"],[206,207,"pl-s"],[217,218,"pl-s"],[218,222,"pl-s"],[219,222,"pl-corl"],[222,223,"pl-s"],[223,224,"pl-s"],[224,279,"pl-corl"],[279,280,"pl-s"]],[[0,1,"pl-v"],[19,20,"pl-s"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,210,"pl-corl"],[210,211,"pl-s"],[221,222,"pl-s"],[222,226,"pl-s"],[223,226,"pl-corl"],[226,227,"pl-s"],[227,228,"pl-s"],[228,283,"pl-corl"],[283,284,"pl-s"]],[[0,1,"pl-v"],[11,12,"pl-s"],[12,38,"pl-c1"],[38,39,"pl-s"],[42,43,"pl-s"],[43,47,"pl-s"],[44,47,"pl-corl"],[47,48,"pl-s"],[48,49,"pl-s"],[49,104,"pl-corl"],[104,105,"pl-s"],[108,109,"pl-s"],[116,117,"pl-s"],[117,118,"pl-s"],[118,210,"pl-corl"],[210,211,"pl-s"],[221,222,"pl-s"],[222,226,"pl-s"],[223,226,"pl-corl"],[226,227,"pl-s"],[227,228,"pl-s"],[228,283,"pl-corl"],[283,284,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[57,58,"pl-s"],[58,62,"pl-s"],[59,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,119,"pl-corl"],[119,120,"pl-s"],[123,124,"pl-s"],[131,132,"pl-s"],[132,133,"pl-s"],[133,225,"pl-corl"],[225,226,"pl-s"],[236,237,"pl-s"],[237,241,"pl-s"],[238,241,"pl-corl"],[241,242,"pl-s"],[242,243,"pl-s"],[243,298,"pl-corl"],[298,299,"pl-s"]],[[0,1,"pl-v"],[14,16,"pl-s"],[18,20,"pl-s"],[30,31,"pl-s"],[31,35,"pl-s"],[32,35,"pl-corl"],[35,36,"pl-s"],[36,37,"pl-s"],[37,92,"pl-corl"],[92,93,"pl-s"],[96,97,"pl-s"],[104,105,"pl-s"],[105,106,"pl-s"],[106,198,"pl-corl"],[198,199,"pl-s"]],[[0,1,"pl-v"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,97,"pl-corl"],[97,98,"pl-s"],[101,102,"pl-s"],[109,110,"pl-s"],[110,111,"pl-s"],[111,203,"pl-corl"],[203,204,"pl-s"],[214,215,"pl-s"],[215,219,"pl-s"],[216,219,"pl-corl"],[219,220,"pl-s"],[220,221,"pl-s"],[221,276,"pl-corl"],[276,277,"pl-s"]],[[0,1,"pl-v"],[9,10,"pl-s"],[10,13,"pl-c1"],[13,14,"pl-s"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,99,"pl-corl"],[99,100,"pl-s"],[103,104,"pl-s"],[111,112,"pl-s"],[112,113,"pl-s"],[113,205,"pl-corl"],[205,206,"pl-s"],[216,217,"pl-s"],[217,221,"pl-s"],[218,221,"pl-corl"],[221,222,"pl-s"],[222,223,"pl-s"],[223,278,"pl-corl"],[278,279,"pl-s"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,52,"pl-c1"],[52,53,"pl-s"],[74,75,"pl-s"],[75,79,"pl-s"],[76,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,136,"pl-corl"],[136,137,"pl-s"],[140,141,"pl-s"],[148,149,"pl-s"],[149,150,"pl-s"],[150,242,"pl-corl"],[242,243,"pl-s"],[253,254,"pl-s"],[254,258,"pl-s"],[255,258,"pl-corl"],[258,259,"pl-s"],[259,260,"pl-s"],[260,315,"pl-corl"],[315,316,"pl-s"]],[],[[0,93,"pl-mh"],[3,93,"pl-en"],[3,4,"pl-s"],[9,10,"pl-s"],[10,11,"pl-s"],[11,79,"pl-corl"],[79,80,"pl-s"]],[],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,1,"pl-v"],[19,20,"pl-s"],[20,25,"pl-c1"],[25,26,"pl-s"],[31,32,"pl-s"],[32,38,"pl-c1"],[38,39,"pl-s"],[70,71,"pl-s"],[71,75,"pl-s"],[72,75,"pl-corl"],[75,76,"pl-s"],[76,77,"pl-s"],[77,132,"pl-corl"],[132,133,"pl-s"],[136,137,"pl-s"],[144,145,"pl-s"],[145,146,"pl-s"],[146,238,"pl-corl"],[238,239,"pl-s"],[249,250,"pl-s"],[250,254,"pl-s"],[251,254,"pl-corl"],[254,255,"pl-s"],[255,256,"pl-s"],[256,311,"pl-corl"],[311,312,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,87,"pl-corl"],[87,88,"pl-s"],[91,92,"pl-s"],[99,100,"pl-s"],[100,101,"pl-s"],[101,193,"pl-corl"],[193,194,"pl-s"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,35,"pl-c1"],[35,36,"pl-s"],[59,60,"pl-s"],[60,64,"pl-s"],[61,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,121,"pl-corl"],[121,122,"pl-s"],[125,126,"pl-s"],[133,134,"pl-s"],[134,135,"pl-s"],[135,227,"pl-corl"],[227,228,"pl-s"],[238,239,"pl-s"],[239,243,"pl-s"],[240,243,"pl-corl"],[243,244,"pl-s"],[244,245,"pl-s"],[245,300,"pl-corl"],[300,301,"pl-s"]],[[0,1,"pl-v"],[36,37,"pl-s"],[37,41,"pl-s"],[38,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,98,"pl-corl"],[98,99,"pl-s"],[102,103,"pl-s"],[110,111,"pl-s"],[111,112,"pl-s"],[112,204,"pl-corl"],[204,205,"pl-s"],[215,216,"pl-s"],[216,220,"pl-s"],[217,220,"pl-corl"],[220,221,"pl-s"],[221,222,"pl-s"],[222,277,"pl-corl"],[277,278,"pl-s"]],[],[[0,8,"pl-mh"],[3,8,"pl-en"]],[],[],[],[],[[0,26,"pl-mh"],[4,26,"pl-en"]],[[0,1,"pl-v"],[2,3,"pl-s"],[3,14,"pl-c1"],[14,15,"pl-s"],[20,21,"pl-s"],[21,38,"pl-c1"],[38,39,"pl-s"],[72,73,"pl-s"],[73,77,"pl-s"],[74,77,"pl-corl"],[77,78,"pl-s"],[78,79,"pl-s"],[79,128,"pl-corl"],[128,129,"pl-s"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,81,"pl-corl"],[81,82,"pl-s"]],[[0,1,"pl-v"],[17,18,"pl-s"],[18,22,"pl-s"],[19,22,"pl-corl"],[22,23,"pl-s"],[23,24,"pl-s"],[24,73,"pl-corl"],[73,74,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,17,"pl-c1"],[17,18,"pl-s"],[21,22,"pl-s"],[22,26,"pl-s"],[23,26,"pl-corl"],[26,27,"pl-s"],[27,28,"pl-s"],[28,77,"pl-corl"],[77,78,"pl-s"]],[[0,1,"pl-v"],[30,31,"pl-s"],[31,35,"pl-s"],[32,35,"pl-corl"],[35,36,"pl-s"],[36,37,"pl-s"],[37,86,"pl-corl"],[86,87,"pl-s"]],[[0,1,"pl-v"],[68,69,"pl-s"],[69,73,"pl-s"],[70,73,"pl-corl"],[73,74,"pl-s"],[74,75,"pl-s"],[75,124,"pl-corl"],[124,125,"pl-s"]],[],[[0,16,"pl-mh"],[4,16,"pl-en"]],[[0,1,"pl-v"],[28,29,"pl-s"],[29,33,"pl-s"],[30,33,"pl-corl"],[33,34,"pl-s"],[34,35,"pl-s"],[35,84,"pl-corl"],[84,85,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,13,"pl-c1"],[13,14,"pl-s"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,93,"pl-corl"],[93,94,"pl-s"]],[[0,1,"pl-v"],[12,13,"pl-s"],[13,29,"pl-c1"],[29,30,"pl-s"],[35,36,"pl-s"],[36,54,"pl-c1"],[54,55,"pl-s"],[60,61,"pl-s"],[61,84,"pl-c1"],[84,85,"pl-s"],[88,89,"pl-s"],[89,93,"pl-s"],[90,93,"pl-corl"],[93,94,"pl-s"],[94,95,"pl-s"],[95,144,"pl-corl"],[144,145,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,23,"pl-c1"],[23,25,"pl-s"],[30,32,"pl-s"],[32,47,"pl-c1"],[47,49,"pl-s"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,108,"pl-corl"],[108,109,"pl-s"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,70,"pl-s"],[67,70,"pl-corl"],[70,71,"pl-s"],[71,72,"pl-s"],[72,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,29,"pl-c1"],[29,31,"pl-s"],[33,34,"pl-s"],[34,38,"pl-s"],[35,38,"pl-corl"],[38,39,"pl-s"],[39,40,"pl-s"],[40,89,"pl-corl"],[89,90,"pl-s"]],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[[0,1,"pl-v"],[46,47,"pl-s"],[47,51,"pl-s"],[48,51,"pl-corl"],[51,52,"pl-s"],[52,53,"pl-s"],[53,102,"pl-corl"],[102,103,"pl-s"]],[[0,1,"pl-v"],[34,35,"pl-s"],[35,39,"pl-s"],[36,39,"pl-corl"],[39,40,"pl-s"],[40,41,"pl-s"],[41,90,"pl-corl"],[90,91,"pl-s"]],[[0,1,"pl-v"],[19,20,"pl-s"],[20,24,"pl-s"],[21,24,"pl-corl"],[24,25,"pl-s"],[25,26,"pl-s"],[26,75,"pl-corl"],[75,76,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,116,"pl-corl"],[116,117,"pl-s"]],[],[[0,30,"pl-mh"],[4,30,"pl-en"]],[[0,1,"pl-v"],[25,26,"pl-s"],[26,30,"pl-s"],[27,30,"pl-corl"],[30,31,"pl-s"],[31,32,"pl-s"],[32,81,"pl-corl"],[81,82,"pl-s"]],[[0,1,"pl-v"],[35,36,"pl-s"],[36,40,"pl-s"],[37,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,91,"pl-corl"],[91,92,"pl-s"]],[[0,1,"pl-v"],[39,40,"pl-s"],[40,44,"pl-s"],[41,44,"pl-corl"],[44,45,"pl-s"],[45,46,"pl-s"],[46,95,"pl-corl"],[95,96,"pl-s"]],[],[[0,8,"pl-mh"],[3,8,"pl-en"]],[],[],[],[[0,16,"pl-mh"],[4,16,"pl-en"]],[[0,1,"pl-v"],[12,13,"pl-s"],[13,31,"pl-c1"],[31,32,"pl-s"],[52,53,"pl-s"],[53,67,"pl-c1"],[67,68,"pl-s"],[70,71,"pl-s"],[71,82,"pl-c1"],[82,83,"pl-s"],[85,86,"pl-s"],[86,103,"pl-c1"],[103,104,"pl-s"],[106,107,"pl-s"],[107,116,"pl-c1"],[116,117,"pl-s"],[120,121,"pl-s"],[121,125,"pl-s"],[122,125,"pl-corl"],[125,126,"pl-s"],[126,127,"pl-s"],[127,176,"pl-corl"],[176,177,"pl-s"]],[],[[0,26,"pl-mh"],[4,26,"pl-en"]],[[0,1,"pl-v"],[73,74,"pl-s"],[74,78,"pl-s"],[75,78,"pl-corl"],[78,79,"pl-s"],[79,80,"pl-s"],[80,129,"pl-corl"],[129,130,"pl-s"]],[[0,1,"pl-v"],[60,61,"pl-s"],[61,65,"pl-s"],[62,65,"pl-corl"],[65,66,"pl-s"],[66,67,"pl-s"],[67,116,"pl-corl"],[116,117,"pl-s"]],[[0,1,"pl-v"],[55,56,"pl-s"],[56,60,"pl-s"],[57,60,"pl-corl"],[60,61,"pl-s"],[61,62,"pl-s"],[62,111,"pl-corl"],[111,112,"pl-s"]],[[0,1,"pl-v"],[59,60,"pl-s"],[60,64,"pl-s"],[61,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[61,62,"pl-s"],[62,66,"pl-s"],[63,66,"pl-corl"],[66,67,"pl-s"],[67,68,"pl-s"],[68,117,"pl-corl"],[117,118,"pl-s"]],[[0,1,"pl-v"],[78,79,"pl-s"],[79,83,"pl-s"],[80,83,"pl-corl"],[83,84,"pl-s"],[84,85,"pl-s"],[85,134,"pl-corl"],[134,135,"pl-s"]],[[0,1,"pl-v"],[22,24,"pl-s"],[24,31,"pl-c1"],[31,33,"pl-s"],[39,41,"pl-s"],[41,44,"pl-c1"],[44,46,"pl-s"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,105,"pl-corl"],[105,106,"pl-s"]],[[0,1,"pl-v"],[30,32,"pl-s"],[32,48,"pl-c1"],[48,50,"pl-s"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[50,51,"pl-s"],[51,55,"pl-s"],[52,55,"pl-corl"],[55,56,"pl-s"],[56,57,"pl-s"],[57,106,"pl-corl"],[106,107,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,85,"pl-corl"],[85,86,"pl-s"]],[[0,1,"pl-v"],[2,3,"pl-s"],[3,19,"pl-c1"],[19,20,"pl-s"],[59,60,"pl-s"],[60,64,"pl-s"],[61,64,"pl-corl"],[64,65,"pl-s"],[65,66,"pl-s"],[66,115,"pl-corl"],[115,116,"pl-s"]],[[0,1,"pl-v"],[21,22,"pl-s"],[22,26,"pl-s"],[23,26,"pl-corl"],[26,27,"pl-s"],[27,28,"pl-s"],[28,77,"pl-corl"],[77,78,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,85,"pl-corl"],[85,86,"pl-s"]],[[0,1,"pl-v"],[18,20,"pl-s"],[20,28,"pl-c1"],[28,30,"pl-s"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,108,"pl-corl"],[108,109,"pl-s"]],[[0,1,"pl-v"],[67,68,"pl-s"],[68,72,"pl-s"],[69,72,"pl-corl"],[72,73,"pl-s"],[73,74,"pl-s"],[74,123,"pl-corl"],[123,124,"pl-s"]],[],[[0,16,"pl-mh"],[4,16,"pl-en"]],[[0,1,"pl-v"],[65,66,"pl-s"],[66,70,"pl-s"],[67,70,"pl-corl"],[70,71,"pl-s"],[71,72,"pl-s"],[72,121,"pl-corl"],[121,122,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,36,"pl-c1"],[36,38,"pl-s"],[41,42,"pl-s"],[42,46,"pl-s"],[43,46,"pl-corl"],[46,47,"pl-s"],[47,48,"pl-s"],[48,97,"pl-corl"],[97,98,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,27,"pl-c1"],[27,29,"pl-s"],[31,32,"pl-s"],[32,36,"pl-s"],[33,36,"pl-corl"],[36,37,"pl-s"],[37,38,"pl-s"],[38,87,"pl-corl"],[87,88,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,27,"pl-c1"],[27,29,"pl-s"],[37,38,"pl-s"],[38,42,"pl-s"],[39,42,"pl-corl"],[42,43,"pl-s"],[43,44,"pl-s"],[44,93,"pl-corl"],[93,94,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,31,"pl-c1"],[31,33,"pl-s"],[36,37,"pl-s"],[37,41,"pl-s"],[38,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,92,"pl-corl"],[92,93,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,105,"pl-corl"],[105,106,"pl-s"]],[[0,1,"pl-v"],[26,27,"pl-s"],[27,31,"pl-s"],[28,31,"pl-corl"],[31,32,"pl-s"],[32,33,"pl-s"],[33,82,"pl-corl"],[82,83,"pl-s"]],[[0,1,"pl-v"],[40,41,"pl-s"],[41,45,"pl-s"],[42,45,"pl-corl"],[45,46,"pl-s"],[46,47,"pl-s"],[47,96,"pl-corl"],[96,97,"pl-s"]],[[0,1,"pl-v"],[27,28,"pl-s"],[28,32,"pl-s"],[29,32,"pl-corl"],[32,33,"pl-s"],[33,34,"pl-s"],[34,83,"pl-corl"],[83,84,"pl-s"]],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[[0,1,"pl-v"],[31,32,"pl-s"],[32,36,"pl-s"],[33,36,"pl-corl"],[36,37,"pl-s"],[37,38,"pl-s"],[38,87,"pl-corl"],[87,88,"pl-s"]],[[0,1,"pl-v"],[27,28,"pl-s"],[28,32,"pl-s"],[29,32,"pl-corl"],[32,33,"pl-s"],[33,34,"pl-s"],[34,83,"pl-corl"],[83,84,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,19,"pl-c1"],[19,20,"pl-s"],[36,37,"pl-s"],[37,41,"pl-s"],[38,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,92,"pl-corl"],[92,93,"pl-s"]],[[0,1,"pl-v"],[6,7,"pl-s"],[7,28,"pl-c1"],[28,29,"pl-s"],[51,52,"pl-s"],[52,56,"pl-s"],[53,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,107,"pl-corl"],[107,108,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[38,39,"pl-s"],[39,43,"pl-s"],[40,43,"pl-corl"],[43,44,"pl-s"],[44,45,"pl-s"],[45,94,"pl-corl"],[94,95,"pl-s"]],[[0,1,"pl-v"],[57,58,"pl-s"],[58,62,"pl-s"],[59,62,"pl-corl"],[62,63,"pl-s"],[63,64,"pl-s"],[64,113,"pl-corl"],[113,114,"pl-s"]],[],[[0,30,"pl-mh"],[4,30,"pl-en"]],[[0,1,"pl-v"],[20,21,"pl-s"],[21,35,"pl-c1"],[35,36,"pl-s"],[51,52,"pl-s"],[52,57,"pl-c1"],[57,58,"pl-s"],[74,75,"pl-s"],[75,79,"pl-s"],[76,79,"pl-corl"],[79,80,"pl-s"],[80,81,"pl-s"],[81,130,"pl-corl"],[130,131,"pl-s"]],[[0,1,"pl-v"],[56,57,"pl-s"],[57,61,"pl-s"],[58,61,"pl-corl"],[61,62,"pl-s"],[62,63,"pl-s"],[63,112,"pl-corl"],[112,113,"pl-s"]],[[0,1,"pl-v"],[49,50,"pl-s"],[50,54,"pl-s"],[51,54,"pl-corl"],[54,55,"pl-s"],[55,56,"pl-s"],[56,105,"pl-corl"],[105,106,"pl-s"]],[[0,1,"pl-v"],[16,17,"pl-s"],[17,31,"pl-c1"],[31,32,"pl-s"],[34,35,"pl-s"],[35,39,"pl-s"],[36,39,"pl-corl"],[39,40,"pl-s"],[40,41,"pl-s"],[41,90,"pl-corl"],[90,91,"pl-s"]],[[0,1,"pl-v"],[43,44,"pl-s"],[44,48,"pl-s"],[45,48,"pl-corl"],[48,49,"pl-s"],[49,50,"pl-s"],[50,99,"pl-corl"],[99,100,"pl-s"]],[[0,1,"pl-v"],[53,54,"pl-s"],[54,58,"pl-s"],[55,58,"pl-corl"],[58,59,"pl-s"],[59,60,"pl-s"],[60,109,"pl-corl"],[109,110,"pl-s"]],[[0,1,"pl-v"],[33,34,"pl-s"],[34,38,"pl-s"],[35,38,"pl-corl"],[38,39,"pl-s"],[39,40,"pl-s"],[40,89,"pl-corl"],[89,90,"pl-s"]],[[0,1,"pl-v"],[51,52,"pl-s"],[52,56,"pl-s"],[53,56,"pl-corl"],[56,57,"pl-s"],[57,58,"pl-s"],[58,107,"pl-corl"],[107,108,"pl-s"],[111,112,"pl-s"],[112,116,"pl-s"],[113,116,"pl-corl"],[116,117,"pl-s"],[117,118,"pl-s"],[118,167,"pl-corl"],[167,168,"pl-s"]],[[0,1,"pl-v"],[21,22,"pl-s"],[22,44,"pl-c1"],[44,45,"pl-s"],[63,64,"pl-s"],[64,68,"pl-s"],[65,68,"pl-corl"],[68,69,"pl-s"],[69,70,"pl-s"],[70,119,"pl-corl"],[119,120,"pl-s"]],[],[[0,8,"pl-mh"],[3,8,"pl-en"]],[],[],[],[[0,26,"pl-mh"],[4,26,"pl-en"]],[[0,1,"pl-v"],[41,42,"pl-s"],[42,46,"pl-s"],[43,46,"pl-corl"],[46,47,"pl-s"],[47,48,"pl-s"],[48,97,"pl-corl"],[97,98,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,34,"pl-s"],[31,34,"pl-corl"],[34,35,"pl-s"],[35,36,"pl-s"],[36,85,"pl-corl"],[85,86,"pl-s"]],[],[[0,16,"pl-mh"],[4,16,"pl-en"]],[[0,1,"pl-v"],[27,28,"pl-s"],[28,31,"pl-s"],[29,31,"pl-corl"],[31,32,"pl-s"],[32,33,"pl-s"],[33,81,"pl-corl"],[81,82,"pl-s"]],[[0,1,"pl-v"],[20,21,"pl-s"],[21,24,"pl-s"],[22,24,"pl-corl"],[24,25,"pl-s"],[25,26,"pl-s"],[26,74,"pl-corl"],[74,75,"pl-s"]],[[0,1,"pl-v"],[36,37,"pl-s"],[37,40,"pl-s"],[38,40,"pl-corl"],[40,41,"pl-s"],[41,42,"pl-s"],[42,90,"pl-corl"],[90,91,"pl-s"]],[[0,1,"pl-v"],[37,38,"pl-s"],[38,41,"pl-s"],[39,41,"pl-corl"],[41,42,"pl-s"],[42,43,"pl-s"],[43,91,"pl-corl"],[91,92,"pl-s"]],[[0,1,"pl-v"],[20,21,"pl-s"],[21,24,"pl-s"],[22,24,"pl-corl"],[24,25,"pl-s"],[25,26,"pl-s"],[26,74,"pl-corl"],[74,75,"pl-s"]],[[0,1,"pl-v"],[29,30,"pl-s"],[30,33,"pl-s"],[31,33,"pl-corl"],[33,34,"pl-s"],[34,35,"pl-s"],[35,83,"pl-corl"],[83,84,"pl-s"]],[[0,1,"pl-v"],[23,24,"pl-s"],[24,27,"pl-s"],[25,27,"pl-corl"],[27,28,"pl-s"],[28,29,"pl-s"],[29,77,"pl-corl"],[77,78,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,29,"pl-c1"],[29,31,"pl-s"],[36,38,"pl-s"],[38,59,"pl-c1"],[59,61,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,32,"pl-c1"],[32,34,"pl-s"],[39,41,"pl-s"],[41,65,"pl-c1"],[65,67,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,30,"pl-c1"],[30,32,"pl-s"],[37,39,"pl-s"],[39,61,"pl-c1"],[61,63,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,25,"pl-c1"],[25,27,"pl-s"],[32,34,"pl-s"],[34,51,"pl-c1"],[51,53,"pl-s"]],[[0,1,"pl-v"],[12,14,"pl-s"],[14,23,"pl-c1"],[23,25,"pl-s"],[30,32,"pl-s"],[32,47,"pl-c1"],[47,49,"pl-s"]],[],[[0,17,"pl-mh"],[4,17,"pl-en"]],[[0,1,"pl-v"],[52,53,"pl-s"],[53,57,"pl-s"],[54,57,"pl-corl"],[57,58,"pl-s"],[58,59,"pl-s"],[59,108,"pl-corl"],[108,109,"pl-s"]],[],[[0,12,"pl-mh"],[3,12,"pl-en"]],[],[]],"colorizedLines":null}},"title":"python-ndb/CHANGELOG.md at main · googleapis/python-ndb","appPayload":{},"meta":{"title":"python-ndb/CHANGELOG.md at main · googleapis/python-ndb"}}</script>
  <div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/googleapis/python-ndb" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout" data-has-sidebar="true"><div class="prc-PageLayout-SidebarWrapper-kLG4B CopilotSidePanelSidebar-module__SidePanel__L3O0C CopilotSidePanelSidebar-module__HiddenSidePanel__TBRGn" style="--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end" data-sticky="true" data-responsive-variant="fullscreen"><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-SidebarVerticalDivider-0Rl0V" data-component="PageLayout.VerticalDivider" data-variant="line" data-position="end" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="450" aria-valuemax="768" aria-valuenow="544" aria-valuetext="Pane width 544 pixels" tabindex="0"></div></div><div class="prc-PageLayout-Sidebar-iciWg" data-component="SplitPageLayout.Sidebar" data-resizable="true" style="--spacing:var(--spacing-normal);--pane-min-width:450px;--pane-max-width:768px;--pane-width-custom:544px;--pane-width-size:var(--pane-width-custom);--pane-width:544px"><div class="height-full" data-testid="copilot-code-view-side-panel"><div id="copilot-side-panel-content" class="height-full"></div></div></div></div><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div id="repos-file-tree-sidebar" class="CodeViewFileTreeLayout-module__sidebar__n_Aau" tabindex="0"><div class="prc-PageLayout-PaneWrapper-pHPop ReposFileTreePane-module__Pane__rBZpI ReposFileTreePane-module__HideTree__AYZnm ReposFileTreePane-module__HidePane__VHAVt" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-regular="none" data-variant-narrow="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="line" data-variant-wide="line" data-position="start" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="256" aria-valuemax="600" aria-valuenow="320" aria-valuetext="Pane width 320 pixels" tabindex="0"></div></div></div></div><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"> <!-- --> <div class="container CodeViewHeader-module__Box__JkPOb"><div class="CodeViewHeader-module__StickyHeader__Qn7UN" id="StickyHeader"><div class="CodeViewHeader-module__Box_1__SbNDV"><div class="CodeViewHeader-module__Box_2__TB46f"><div class="react-code-view-header-wrap--narrow CodeViewHeader-module__Box_3__q1zUL"><div class="CodeViewHeader-module__treeToggleWrapper__RQ__9"><h2 class="use-tree-pane-module__Heading__s4QbZ prc-Heading-Heading-MtWFE" data-component="Heading"><button data-component="Button" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="prc-Button-ButtonBase-9n-Xk ExpandFileTreeButton-module__Button_1__Svs95" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Files</span></span></button><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-9n-Xk position-relative ExpandFileTreeButton-module__expandButton__hDOcv ExpandFileTreeButton-module__filesButtonBreakpoint__zEvz3 fgColor-muted prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-labelledby="_R_4lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="se" data-component="Tooltip" aria-hidden="true" id="_R_4lla9lik5_">Expand file tree</span><div class="d-none"></div></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="main branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="react-code-view-header-mb--narrow CodeViewHeader-module__Box_5__MQ0hL"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__lg__Rjz0A"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/googleapis/python-ndb/tree/main" data-discover="true">python-ndb</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__lg__Rjz0A prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="file-name-id">CHANGELOG.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lla9lik5_">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div><div class="CodeViewHeader-module__FileResultsList__JDzUy"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_5ipla9lik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_5ipla9lik5_ _R_5ipla9lik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_5ipla9lik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div><div class="d-none"></div></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_v4pla9lik5_" id="_R_14pla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_v4pla9lik5_">More file actions</span></div></div></div><div class="react-code-view-header-element--narrow"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_v4tla9lik5_" id="_R_14tla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_v4tla9lik5_">More file actions</span></div></div></div></div></div></div></div><div class="CodeView-module__contentWrapper__cG2JH"><div class="react-code-view-bottom-padding"><div class="BlobTopBanners-module__Box__v_nvx"></div></div> <div class="d-none"></div><div class="d-flex flex-column border rounded-2 tmp-mb-3 pl-1"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/googleapis/python-ndb/commits/main/CHANGELOG.md" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/googleapis/python-ndb/commits/main/CHANGELOG.md" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_4mlala9lik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_4mlala9lik5_">History</span></div></div></div></div></div><div class="d-flex flex-row"><div class="container BlobViewContent-module__blobContainer__DtH2d"><div class="react-code-size-details-banner BlobViewContent-module__codeSizeDetails__e5sUw"><div class="react-code-size-details-banner CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="59.6 KB" style="--truncate-max-width:100%"><span>672 lines (397 loc) · 59.6 KB</span></div></div></div></div><div class="react-blob-view-header-sticky BlobViewContent-module__stickyHeader__VwxB5" id="repos-sticky-header"><div class="BlobViewHeader-module__Box__yhm9u"><div class="react-blob-sticky-header"><div class="FileNameStickyHeader-module__outerWrapper__ZL4Xc FileNameStickyHeader-module__outerWrapperHidden__Zpynk"><div class="FileNameStickyHeader-module__Box_1__Hazu5"><div class="FileNameStickyHeader-module__Box_2__hoolP"><div class="FileNameStickyHeader-module__Box_3__MVKsk"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="main branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">main</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="FileNameStickyHeader-module__Box_4__FLhtt"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__md__Wb1Gs"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/googleapis/python-ndb/tree/main" data-discover="true">python-ndb</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__md__Wb1Gs prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="sticky-file-name-id">CHANGELOG.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lcpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lcpala9lik5_">Copy path</span></div></div></div><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk FileNameStickyHeader-module__Button__LSEU_ FileNameStickyHeader-module__GoToTopButton__nxAFn" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Top</span></span></button></div></div></div><div class="BlobViewHeader-module__Box_1__VEmuQ"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">File metadata and controls</h2><div class="BlobViewHeader-module__Box_2__icUs2"><ul aria-label="File view" class="prc-SegmentedControl-SegmentedControl-lqIXp BlobTabButtons-module__SegmentedControl__jen2u" data-variant="default" data-size="small" data-component="SegmentedControl"><li class="prc-SegmentedControl-Item-tSCQh" data-selected="" data-component="SegmentedControl.Button"><button aria-pressed="true" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:transparent"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Preview">Preview</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Code">Code</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Blame">Blame</div></span></button></li></ul><div class="d-none"></div><div class="react-code-size-details-in-header CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="59.6 KB" style="--truncate-max-width:100%"><span>672 lines (397 loc) · 59.6 KB</span></div></div></div></div><div class="BlobViewHeader-module__Box_3__ng6v2"><div class="d-none"></div><div class="react-blob-header-edit-and-raw-actions BlobViewHeader-module__Box_4__J4Y4W"><div class="d-none"></div><div class="prc-ButtonGroup-ButtonGroup-vFUrY" data-component="ButtonGroup"><div class="prc-ButtonGroup-Item-PqvDl"><a data-component="LinkButton" href="https://github.com/googleapis/python-ndb/raw/refs/heads/main/CHANGELOG.md" data-testid="raw-button" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov BlobViewHeader-module__LinkButton__X9kx2" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Raw</span></span></a></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="copy-raw-button" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_qaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_qaucpala9lik5_">Copy raw file</span></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="download-raw-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__downloadButton__ef459 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_eaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_eaucpala9lik5_">Download raw file</span></div></div></div><button data-component="IconButton" type="button" aria-pressed="false" class="prc-Button-ButtonBase-9n-Xk tmp-mr-2 TableOfContents-module__IconButton__jrlNM prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_3ucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_3ucpala9lik5_">Outline</span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click BlobViewHeader-module__IconButton__XrMQY prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_fkecpala9lik5_" id="_R_kecpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_fkecpala9lik5_">Edit and raw actions</span></div></div></div></div><div></div></div><div class="BlobViewContent-module__blobContentWrapper__JS0W6"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="BlobContent-module__blobContentSection__VOgZq BlobContent-module__blobContentSectionMarkdown__mPLOK" style="margin-top:46px"><div class="js-snippet-clipboard-copy-unpositioned BlobContent-module__markdownBlob__T8jpG" data-hpc="true" containertiming="hpc"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">Changelog</h1><a id="user-content-changelog" class="anchor" aria-label="Permalink: Changelog" href="#changelog"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto"><a href="https://pypi.org/project/google-cloud-ndb/#history" rel="nofollow">PyPI History</a></p>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/google-cloud-python/compare/google-cloud-ndb-v2.3.4...google-cloud-ndb-v2.4.0">2.4.0</a> (2025-12-15)</h2><a id="user-content-240-2025-12-15" class="anchor" aria-label="Permalink: 2.4.0 (2025-12-15)" href="#240-2025-12-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features" class="anchor" aria-label="Permalink: Features" href="#features"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add support for Python 3.14 (#1028) (<a href="https://github.com/googleapis/google-cloud-python/commit/947ff9b73c516f18b0411b828d45eb4bd8b95d39">947ff9b73c516f18b0411b828d45eb4bd8b95d39</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.3.3...v2.3.4">2.3.4</a> (2025-06-11)</h2><a id="user-content-234-2025-06-11" class="anchor" aria-label="Permalink: 2.3.4 (2025-06-11)" href="#234-2025-06-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Allow protobuf 6.x, allow redis 6.x (<a href="https://github.com/googleapis/python-ndb/issues/1013" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/1013/hovercard">#1013</a>) (<a href="https://github.com/googleapis/python-ndb/commit/b3684fe46c13b5d39deccc456f544b0f6f473d91">b3684fe</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.3.2...v2.3.3">2.3.3</a> (2025-05-09)</h2><a id="user-content-233-2025-05-09" class="anchor" aria-label="Permalink: 2.3.3 (2025-05-09)" href="#233-2025-05-09"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-1" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Support sub-meanings for datastore v2.20.3 (<a href="https://github.com/googleapis/python-ndb/issues/1014" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/1014/hovercard">#1014</a>) (<a href="https://github.com/googleapis/python-ndb/commit/88f14fa462b7f7caf72688374682bb1b7a2d933c">88f14fa</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.3.1...v2.3.2">2.3.2</a> (2024-07-15)</h2><a id="user-content-232-2024-07-15" class="anchor" aria-label="Permalink: 2.3.2 (2024-07-15)" href="#232-2024-07-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-2" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-2"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Allow Protobuf 5.x (<a href="https://github.com/googleapis/python-ndb/issues/991" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/991/hovercard">#991</a>) (<a href="https://github.com/googleapis/python-ndb/commit/5812a3c2833ef9edda1726645e32789752474bd6">5812a3c</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.3.0...v2.3.1">2.3.1</a> (2024-03-16)</h2><a id="user-content-231-2024-03-16" class="anchor" aria-label="Permalink: 2.3.1 (2024-03-16)" href="#231-2024-03-16"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-3" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-3"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>grpc:</strong> Fix large payload handling when using the emulator. (<a href="https://github.com/googleapis/python-ndb/issues/975" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/975/hovercard">#975</a>) (<a href="https://github.com/googleapis/python-ndb/commit/d9162aee709062683bf5f9f01208bd40f46d490a">d9162ae</a>)</li>
<li>Remove uses of six. <a href="https://github.com/googleapis/python-ndb/issues/913">#913</a> (<a href="https://github.com/googleapis/python-ndb/issues/958" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/958/hovercard">#958</a>) (<a href="https://github.com/googleapis/python-ndb/commit/e17129a2114c3f5d45b99cc9a4911b586eb3fafa">e17129a</a>)</li>
<li>Show a non-None error for core_exception.Unknown errors. (<a href="https://github.com/googleapis/python-ndb/issues/968" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/968/hovercard">#968</a>) (<a href="https://github.com/googleapis/python-ndb/commit/66e61cc578335509d480650906528fa390f44c11">66e61cc</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation" class="anchor" aria-label="Permalink: Documentation" href="#documentation"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Document how to run system tests against the emulator. (<a href="https://github.com/googleapis/python-ndb/issues/963" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/963/hovercard">#963</a>) (<a href="https://github.com/googleapis/python-ndb/commit/47db5b9f6ee1fc7c01ad86d476cd8e066fb5cffb">47db5b9</a>)</li>
<li>Note to use functools.wrap instead of utils.wrapping. (<a href="https://github.com/googleapis/python-ndb/issues/966" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/966/hovercard">#966</a>) (<a href="https://github.com/googleapis/python-ndb/commit/5e9f3d6977677c20b3447f07bf8bcf4553aac076">5e9f3d6</a>)</li>
<li>Tell users of utils.wrapping to use functools.wraps (<a href="https://github.com/googleapis/python-ndb/issues/967" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/967/hovercard">#967</a>) (<a href="https://github.com/googleapis/python-ndb/commit/042645b52608a1c11645dd4b014a90040468b113">042645b</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.2.2...v2.3.0">2.3.0</a> (2024-03-01)</h2><a id="user-content-230-2024-03-01" class="anchor" aria-label="Permalink: 2.3.0 (2024-03-01)" href="#230-2024-03-01"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-1" class="anchor" aria-label="Permalink: Features" href="#features-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add field information when raising validation errors. (<a href="https://github.com/googleapis/python-ndb/issues/956" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/956/hovercard">#956</a>) (<a href="https://github.com/googleapis/python-ndb/commit/17caf0b5f7d0c4d18522f676c8af990b8ff8462d">17caf0b</a>)</li>
<li>Add Python 3.12 (<a href="https://github.com/googleapis/python-ndb/issues/949" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/949/hovercard">#949</a>) (<a href="https://github.com/googleapis/python-ndb/commit/b5c847783b80071c2dd9e9a3dbf899230c99e64a">b5c8477</a>)</li>
<li>Add support for google.cloud.ndb.<strong>version</strong> (<a href="https://github.com/googleapis/python-ndb/issues/929" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/929/hovercard">#929</a>) (<a href="https://github.com/googleapis/python-ndb/commit/42b3f0137caed25ac3242435b571155d2d84c78e">42b3f01</a>)</li>
<li>Add support for server side NOT_IN filter. (<a href="https://github.com/googleapis/python-ndb/issues/957" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/957/hovercard">#957</a>) (<a href="https://github.com/googleapis/python-ndb/commit/f0b0724d7e364cc3f3574e77076465657089b09c">f0b0724</a>)</li>
<li>Allow queries using server side IN. (<a href="https://github.com/googleapis/python-ndb/issues/954" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/954/hovercard">#954</a>) (<a href="https://github.com/googleapis/python-ndb/commit/2646cef3e2687461174a11c45f29de7b84d1fcdb">2646cef</a>)</li>
<li>Introduce compatibility with native namespace packages (<a href="https://github.com/googleapis/python-ndb/issues/933" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/933/hovercard">#933</a>) (<a href="https://github.com/googleapis/python-ndb/commit/ccae387720a28db2686e69dfe23a2599fc4908f0">ccae387</a>)</li>
<li>Use server side != for queries. (<a href="https://github.com/googleapis/python-ndb/issues/950" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/950/hovercard">#950</a>) (<a href="https://github.com/googleapis/python-ndb/commit/106772f031f6c37500a0d463698e59008f9bf19a">106772f</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-4" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-4"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Compressed repeated to uncompressed property (<a href="https://github.com/googleapis/python-ndb/issues/772" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/772/hovercard">#772</a>) (<a href="https://github.com/googleapis/python-ndb/commit/dab9edf0fc161051eb13c296cbe973b3a16b502d">dab9edf</a>)</li>
<li>Repeated structured property containing blob property with legacy_data (<a href="https://github.com/googleapis/python-ndb/issues/817">#817</a>) (<a href="https://github.com/googleapis/python-ndb/issues/946" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/946/hovercard">#946</a>) (<a href="https://github.com/googleapis/python-ndb/commit/455f860343ff1b71232dad98cf91415492a899ca">455f860</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-1" class="anchor" aria-label="Permalink: Documentation" href="#documentation-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>init:</strong> Note that Firestore in Datastore Mode is supported (<a href="https://github.com/googleapis/python-ndb/issues/919" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/919/hovercard">#919</a>) (<a href="https://github.com/googleapis/python-ndb/commit/0fa75e71dfc6d56d2c0eaf214a48774b99bb959f">0fa75e7</a>)</li>
<li>Correct read_consistency docs. (<a href="https://github.com/googleapis/python-ndb/issues/948" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/948/hovercard">#948</a>) (<a href="https://github.com/googleapis/python-ndb/commit/7e8481db84a6d0b96cf09c38e90f47d6b7847a0b">7e8481d</a>)</li>
<li>Fix a mistaken ID description (<a href="https://github.com/googleapis/python-ndb/issues/943" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/943/hovercard">#943</a>) (<a href="https://github.com/googleapis/python-ndb/commit/51038139e45807b3a14346ded702fbe202dcfdf2">5103813</a>)</li>
<li>Show how to use named databases (<a href="https://github.com/googleapis/python-ndb/issues/932" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/932/hovercard">#932</a>) (<a href="https://github.com/googleapis/python-ndb/commit/182fe4e2d295768aaf016f94cb43b6b1e5572ebd">182fe4e</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.2.1...v2.2.2">2.2.2</a> (2023-09-19)</h2><a id="user-content-222-2023-09-19" class="anchor" aria-label="Permalink: 2.2.2 (2023-09-19)" href="#222-2023-09-19"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-2" class="anchor" aria-label="Permalink: Documentation" href="#documentation-2"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>query:</strong> Document deprecation of Query.default_options (<a href="https://github.com/googleapis/python-ndb/issues/915" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/915/hovercard">#915</a>) (<a href="https://github.com/googleapis/python-ndb/commit/a656719d8a4f20a8b8dc564a1e3837a2cfb037c4">a656719</a>), closes <a href="https://github.com/googleapis/python-ndb/issues/880" data-hovercard-type="issue" data-hovercard-url="/googleapis/python-ndb/issues/880/hovercard">#880</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.2.0...v2.2.1">2.2.1</a> (2023-09-15)</h2><a id="user-content-221-2023-09-15" class="anchor" aria-label="Permalink: 2.2.1 (2023-09-15)" href="#221-2023-09-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-5" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-5"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>deps:</strong> Add missing six dependency (<a href="https://github.com/googleapis/python-ndb/issues/912" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/912/hovercard">#912</a>) (<a href="https://github.com/googleapis/python-ndb/commit/3b1ffb7e5cabdadfe2a4be6802adef774eec5ef8">3b1ffb7</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-3" class="anchor" aria-label="Permalink: Documentation" href="#documentation-3"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Mark database argument for get_by_id and its async counterpart as ignored (<a href="https://github.com/googleapis/python-ndb/issues/905" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/905/hovercard">#905</a>) (<a href="https://github.com/googleapis/python-ndb/commit/b0f431048b7b2ebb20e4255340290c7687e27425">b0f4310</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.1.1...v2.2.0">2.2.0</a> (2023-07-26)</h2><a id="user-content-220-2023-07-26" class="anchor" aria-label="Permalink: 2.2.0 (2023-07-26)" href="#220-2023-07-26"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-2" class="anchor" aria-label="Permalink: Features" href="#features-2"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Named db support (<a href="https://github.com/googleapis/python-ndb/issues/882" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/882/hovercard">#882</a>) (<a href="https://github.com/googleapis/python-ndb/commit/f5713b0e36e54ef69e9fa7e99975f32870832f65">f5713b0</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-4" class="anchor" aria-label="Permalink: Documentation" href="#documentation-4"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>query:</strong> Fix Py2-style print statements (<a href="https://github.com/googleapis/python-ndb/issues/878" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/878/hovercard">#878</a>) (<a href="https://github.com/googleapis/python-ndb/commit/a3a181a427cc292882691d963b30bc78c05c6592">a3a181a</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.1.0...v2.1.1">2.1.1</a> (2023-02-28)</h2><a id="user-content-211-2023-02-28" class="anchor" aria-label="Permalink: 2.1.1 (2023-02-28)" href="#211-2023-02-28"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-6" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-6"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Query options were not respecting use_cache (<a href="https://github.com/googleapis/python-ndb/issues/873" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/873/hovercard">#873</a>) (<a href="https://github.com/googleapis/python-ndb/commit/802d88d108969cba02437f55e5858556221930f3">802d88d</a>), closes <a href="https://github.com/googleapis/python-ndb/issues/752" data-hovercard-type="issue" data-hovercard-url="/googleapis/python-ndb/issues/752/hovercard">#752</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-5" class="anchor" aria-label="Permalink: Documentation" href="#documentation-5"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Note that we support Python 3.11 in CONTRIBUTING file (<a href="https://github.com/googleapis/python-ndb/issues/872" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/872/hovercard">#872</a>) (<a href="https://github.com/googleapis/python-ndb/commit/982ee5f9e768c6f7f5ef19bf6fe9e646e4e08e1f">982ee5f</a>)</li>
<li>Use cached versions of Cloud objects.inv files (<a href="https://github.com/googleapis/python-ndb/issues/863" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/863/hovercard">#863</a>) (<a href="https://github.com/googleapis/python-ndb/commit/4471e2f11757be280266779544c59c90222b8184">4471e2f</a>), closes <a href="https://github.com/googleapis/python-ndb/issues/862" data-hovercard-type="issue" data-hovercard-url="/googleapis/python-ndb/issues/862/hovercard">#862</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v2.0.0...v2.1.0">2.1.0</a> (2022-12-15)</h2><a id="user-content-210-2022-12-15" class="anchor" aria-label="Permalink: 2.1.0 (2022-12-15)" href="#210-2022-12-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-3" class="anchor" aria-label="Permalink: Features" href="#features-3"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Support client_options for clients (<a href="https://github.com/googleapis/python-ndb/issues/815" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/815/hovercard">#815</a>) (<a href="https://github.com/googleapis/python-ndb/commit/6f94f40dfcd6f10e3cec979e4eb2b83408c66a30">6f94f40</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-7" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-7"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>zlib:</strong> Accomodate different Zlib compression levels (<a href="https://github.com/googleapis/python-ndb/issues/852" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/852/hovercard">#852</a>) (<a href="https://github.com/googleapis/python-ndb/commit/c1ab83b9581b3d4d10dc7d2508b1c93b14e3c31a">c1ab83b</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v1.12.0...v2.0.0">2.0.0</a> (2022-12-06)</h2><a id="user-content-200-2022-12-06" class="anchor" aria-label="Permalink: 2.0.0 (2022-12-06)" href="#200-2022-12-06"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">⚠ BREAKING CHANGES</h3><a id="user-content--breaking-changes" class="anchor" aria-label="Permalink: ⚠ BREAKING CHANGES" href="#-breaking-changes"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>dependencies:</strong> Upgrade to google-cloud-datastore &gt;= 2.7.2</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-4" class="anchor" aria-label="Permalink: Features" href="#features-4"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>dependencies:</strong> Upgrade to google-cloud-datastore &gt;= 2.7.2 (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-8" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-8"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Correct access to SerializeToString, CopyFrom, and MergeFromString (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
<li>Fix enum namespaces (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
<li>Update API capitalization/casing (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
<li>Update datastore stub creation (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
<li>Update module imports (<a href="https://github.com/googleapis/python-ndb/commit/12bbcb548c47803406246d6e3cf55cd947b1500a">12bbcb5</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v1.11.2...v1.12.0">1.12.0</a> (2022-11-29)</h2><a id="user-content-1120-2022-11-29" class="anchor" aria-label="Permalink: 1.12.0 (2022-11-29)" href="#1120-2022-11-29"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-9" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-9"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Drop Python 2 support (<a href="https://github.com/googleapis/python-ndb/commit/90efd77633c97f530088dc3f079547ef4eefd796">90efd77</a>)</li>
<li>Drop Python 3.6 support (<a href="https://github.com/googleapis/python-ndb/issues/829" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/829/hovercard">#829</a>) (<a href="https://github.com/googleapis/python-ndb/commit/b1101994a34f70804027ea0c8a1b9f276d260756">b110199</a>)</li>
<li><strong>model:</strong> Ensure repeated props have same kind when converting from ds (<a href="https://github.com/googleapis/python-ndb/issues/824" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/824/hovercard">#824</a>) (<a href="https://github.com/googleapis/python-ndb/commit/29f5a853174857545e225fe2f0c682dfa0bc3884">29f5a85</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-6" class="anchor" aria-label="Permalink: Documentation" href="#documentation-6"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add note in Django middleware documentation that it is unimplemented (<a href="https://github.com/googleapis/python-ndb/issues/805" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/805/hovercard">#805</a>) (<a href="https://github.com/googleapis/python-ndb/commit/aa7621dba3b5c32141cdcb1d07829a217bb8b0bd">aa7621d</a>)</li>
<li>Add note that ProtoRPC message classes are unimplemented (<a href="https://github.com/googleapis/python-ndb/issues/819" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/819/hovercard">#819</a>) (<a href="https://github.com/googleapis/python-ndb/commit/ae813e9995d103a45a0c7bc6b4c7bdc148c19c29">ae813e9</a>)</li>
<li><strong>context:</strong> Note that several methods are no longer implemented. (<a href="https://github.com/googleapis/python-ndb/issues/821" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/821/hovercard">#821</a>) (<a href="https://github.com/googleapis/python-ndb/commit/34c2c389d02f4692840631d34b6249b88867d725">34c2c38</a>)</li>
<li><strong>CONTRIBUTING:</strong> Note the need for Redis/Memcached env vars in tests (<a href="https://github.com/googleapis/python-ndb/issues/838" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/838/hovercard">#838</a>) (<a href="https://github.com/googleapis/python-ndb/commit/19f84150ab06ae71e25ee48ba7f7285eb0402738">19f8415</a>), closes <a href="https://github.com/googleapis/python-ndb/issues/836" data-hovercard-type="issue" data-hovercard-url="/googleapis/python-ndb/issues/836/hovercard">#836</a></li>
<li>Fix bad import path in migration guide (<a href="https://github.com/googleapis/python-ndb/issues/827" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/827/hovercard">#827</a>) (<a href="https://github.com/googleapis/python-ndb/commit/7b449615629b5a08836ee17a8ab34eb8efbaed21">7b44961</a>)</li>
<li>Fix typo in begin_transaction docstring (<a href="https://github.com/googleapis/python-ndb/issues/822" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/822/hovercard">#822</a>) (<a href="https://github.com/googleapis/python-ndb/commit/7fd3ed315d39a9a50746b00898b22edd3f7d1d0c">7fd3ed3</a>)</li>
<li><strong>README:</strong> Syncronize supported version text with python-datastore (<a href="https://github.com/googleapis/python-ndb/issues/837" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/837/hovercard">#837</a>) (<a href="https://github.com/googleapis/python-ndb/commit/316f95913f2dca12f314e429bbe8bd2582bc1c0f">316f959</a>)</li>
<li><strong>tasklets:</strong> Fix Py2-style print statement (<a href="https://github.com/googleapis/python-ndb/issues/840" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/840/hovercard">#840</a>) (<a href="https://github.com/googleapis/python-ndb/commit/0ebfaedc48911b57d0cb23584a2a84c31a92d06a">0ebfaed</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://github.com/googleapis/python-ndb/compare/v1.11.1...v1.11.2">1.11.2</a> (2022-06-03)</h2><a id="user-content-1112-2022-06-03" class="anchor" aria-label="Permalink: 1.11.2 (2022-06-03)" href="#1112-2022-06-03"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-7" class="anchor" aria-label="Permalink: Documentation" href="#documentation-7"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix changelog header to consistent size (<a href="https://github.com/googleapis/python-ndb/issues/773" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/773/hovercard">#773</a>) (<a href="https://github.com/googleapis/python-ndb/commit/7bb4e5a7bf11061a546f21e6f57cf2937f7a3a9d">7bb4e5a</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.11.0...v1.11.1">1.11.1</a> (2021-11-03)</h2><a id="user-content-1111-2021-11-03" class="anchor" aria-label="Permalink: 1.11.1 (2021-11-03)" href="#1111-2021-11-03"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-10" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-10"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>increase cache lock expiration time (<a href="https://www.github.com/googleapis/python-ndb/issues/740">#740</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2634d01ac9d4a73057d5e16cf476c5ecfc8e7fcf">2634d01</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/728">#728</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.5...v1.11.0">1.11.0</a> (2021-10-28)</h2><a id="user-content-1110-2021-10-28" class="anchor" aria-label="Permalink: 1.11.0 (2021-10-28)" href="#1110-2021-10-28"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-5" class="anchor" aria-label="Permalink: Features" href="#features-5"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add support for python 3.10 (<a href="https://www.github.com/googleapis/python-ndb/issues/735">#735</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/58620c1b17e3a4b3608614bea620e93f39e1bd3a">58620c1</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.4...v1.10.5">1.10.5</a> (2021-10-08)</h2><a id="user-content-1105-2021-10-08" class="anchor" aria-label="Permalink: 1.10.5 (2021-10-08)" href="#1105-2021-10-08"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-11" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>correct regression in <code>Model.get_or_insert</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/731">#731</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/921ec695e246e548f207b0c6aded7296e4b3b263">921ec69</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/729">#729</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.3...v1.10.4">1.10.4</a> (2021-09-28)</h2><a id="user-content-1104-2021-09-28" class="anchor" aria-label="Permalink: 1.10.4 (2021-09-28)" href="#1104-2021-09-28"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-12" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-12"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>pin grpcio / googleapis-common-protos under Python2 (<a href="https://www.github.com/googleapis/python-ndb/issues/725">#725</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/ccc82e42fe2bbb285779a81cff03866facfad667">ccc82e4</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.2...v1.10.3">1.10.3</a> (2021-09-07)</h2><a id="user-content-1103-2021-09-07" class="anchor" aria-label="Permalink: 1.10.3 (2021-09-07)" href="#1103-2021-09-07"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-13" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-13"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>use thread-safe iterator to generate context ids (<a href="https://www.github.com/googleapis/python-ndb/issues/716">#716</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/92ec8ac7de8cd0f50d6104b9e514b4e933cfbb13">92ec8ac</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/715">#715</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.1...v1.10.2">1.10.2</a> (2021-08-31)</h2><a id="user-content-1102-2021-08-31" class="anchor" aria-label="Permalink: 1.10.2 (2021-08-31)" href="#1102-2021-08-31"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-14" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-14"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>deps:</strong> add pytz as an explicit dependency (<a href="https://www.github.com/googleapis/python-ndb/issues/707">#707</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/6b48548a1ea4b0c125314f907c25b47992ee6556">6b48548</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.10.0...v1.10.1">1.10.1</a> (2021-08-11)</h2><a id="user-content-1101-2021-08-11" class="anchor" aria-label="Permalink: 1.10.1 (2021-08-11)" href="#1101-2021-08-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-15" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add rpc request object to debug logging (<a href="https://www.github.com/googleapis/python-ndb/issues/696">#696</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/45e590a0903e6690a516a1eb35002664eebf540d">45e590a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/695">#695</a></li>
<li>allow for legacy repeated structured properties with empty values (<a href="https://www.github.com/googleapis/python-ndb/issues/702">#702</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/60c293d039721f7e842ac8973a743642e182e4a5">60c293d</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/694">#694</a></li>
<li>fix bug with concurrent writes to global cache (<a href="https://www.github.com/googleapis/python-ndb/issues/705">#705</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/bb7cadc45df92757b0b2d49c8914a10869d64965">bb7cadc</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/692">#692</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.9.0...v1.10.0">1.10.0</a> (2021-07-20)</h2><a id="user-content-1100-2021-07-20" class="anchor" aria-label="Permalink: 1.10.0 (2021-07-20)" href="#1100-2021-07-20"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-6" class="anchor" aria-label="Permalink: Features" href="#features-6"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add 'python_requires' metadata to setup (<a href="https://www.github.com/googleapis/python-ndb/issues/681">#681</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e9a09d3f0facd29836ccce078575f12e102462c9">e9a09d3</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-16" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-16"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix bug with repeated structured properties with Expando values (<a href="https://www.github.com/googleapis/python-ndb/issues/671">#671</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/882dff0517be9ddad5814317853ce87bf99d5db0">882dff0</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/669">#669</a></li>
<li>properly handle legacy structured properties in Expando instances (<a href="https://www.github.com/googleapis/python-ndb/issues/676">#676</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/70710c83c5ace83504167801da990bc81cb43c89">70710c8</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/673">#673</a></li>
<li>refactor global cache to address concurrency and fault tolerance issues (<a href="https://www.github.com/googleapis/python-ndb/issues/667">#667</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5e2c591cbd89d8783527252d7f771fba91792602">5e2c591</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.8.0...v1.9.0">1.9.0</a> (2021-06-07)</h2><a id="user-content-190-2021-06-07" class="anchor" aria-label="Permalink: 1.9.0 (2021-06-07)" href="#190-2021-06-07"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-7" class="anchor" aria-label="Permalink: Features" href="#features-7"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>don't flush entire global cache on transient errors (<a href="https://www.github.com/googleapis/python-ndb/issues/654">#654</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/cbf2d7de3d532ce08bd0d25fa18b5226afd216b9">cbf2d7d</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-17" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-17"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>correct inconsistent behavior with regards to namespaces (<a href="https://www.github.com/googleapis/python-ndb/issues/662">#662</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/cf21a285e784019f9ba0f2a89a7acc4105fdcd2a">cf21a28</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/661">#661</a></li>
<li>correctly decode falsy values in legacy protocol buffers (<a href="https://www.github.com/googleapis/python-ndb/issues/628">#628</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/69a9f63be89ca50bbf0a42d0565a9f1fdcf6d143">69a9f63</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/625">#625</a></li>
<li>defer clearing global cache when in transaction (<a href="https://www.github.com/googleapis/python-ndb/issues/660">#660</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/73020ed8f8eb1430f87be4b5680690d9e373c846">73020ed</a>)</li>
<li>detect cache write failure for <code>MemcacheCache</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/665">#665</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5d7f163988c6e8c43579aae616d275db4ca4ff45">5d7f163</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/656">#656</a></li>
<li>do not set read_consistency for queries. (<a href="https://www.github.com/googleapis/python-ndb/issues/664">#664</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/36a5b55b1b21d7333923edd4a42d1a32fd453dfa">36a5b55</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/666">#666</a></li>
<li>limit memcache keys to 250 bytes (<a href="https://www.github.com/googleapis/python-ndb/issues/663">#663</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/7dc11df00fc15392fde61e828e1445eb9e66a1ac">7dc11df</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/619">#619</a></li>
<li>properly handle error when clearing cache (<a href="https://www.github.com/googleapis/python-ndb/issues/636">#636</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/d0ffcf3517fe357d6689943265b829258c397d93">d0ffcf3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/633">#633</a></li>
<li>retry connection errors with memcache (<a href="https://www.github.com/googleapis/python-ndb/issues/645">#645</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/06b466a8421ff7a5586164bf4deb43d6bcbf0ef4">06b466a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/620">#620</a></li>
<li>support ordering by key for multi queries (<a href="https://www.github.com/googleapis/python-ndb/issues/630">#630</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/508d8cb8c65afe5e885c1fdba4dce933d52cfd4b">508d8cb</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/629">#629</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.7.3...v1.8.0">1.8.0</a> (2021-04-06)</h2><a id="user-content-180-2021-04-06" class="anchor" aria-label="Permalink: 1.8.0 (2021-04-06)" href="#180-2021-04-06"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-8" class="anchor" aria-label="Permalink: Features" href="#features-8"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>retry global cache operations on transient errors (<a href="https://www.github.com/googleapis/python-ndb/issues/603">#603</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5d6b6503ce40ba0d36ea79a461c2c95897235734">5d6b650</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/601">#601</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-18" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-18"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>don't return <code>None</code> for entities found in queries (<a href="https://www.github.com/googleapis/python-ndb/issues/612">#612</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9e5e255c14716b3046a9dc70bb8a4596beec1562">9e5e255</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/586">#586</a></li>
<li>fix bug with compressed blob property (<a href="https://www.github.com/googleapis/python-ndb/issues/615">#615</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/d305f9fd2b1cfe8e7d709849e392402f4ae059ac">d305f9f</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/602">#602</a></li>
<li>fix failing unit test (<a href="https://www.github.com/googleapis/python-ndb/issues/607">#607</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5d3927e0b0a6d6a447585d2cc90077de26f24c5c">5d3927e</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/606">#606</a></li>
<li>handle unpickling between GAE NDB (2.7) to Cloud NDB (3) (<a href="https://www.github.com/googleapis/python-ndb/issues/596">#596</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5be4225f20b9216b49f953c464b8b8ef9683d8bf">5be4225</a>)</li>
<li>mock call to <code>tasklets.sleep</code> in unit test (<a href="https://www.github.com/googleapis/python-ndb/issues/609">#609</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/00e23f3f31fb531b402f087e29b539a7af9ac79f">00e23f3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/608">#608</a></li>
<li>prevent mismatch error when using default namespace on ancestor queries (<a href="https://www.github.com/googleapis/python-ndb/issues/614">#614</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/ae67f04db12c65ecca9d6145f113729072b952f3">ae67f04</a>)</li>
<li>reimplement <code>_clone_properties</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/610">#610</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e23f42b27cec6f7fcf05ae51d4e6ee2aea30f6ca">e23f42b</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/566">#566</a></li>
<li>replicate legacy behavior for using cache with queries (<a href="https://www.github.com/googleapis/python-ndb/issues/613">#613</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/edd1185f01c6db5b4876f7b0ce81df0315c98890">edd1185</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/586">#586</a></li>
<li>support <code>int</code> as base type for <code>BooleanProperty</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/624">#624</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/a04bf3acef3eb88f23c4f0832ce74af9557cb03d">a04bf3a</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.7.2...v1.7.3">1.7.3</a> (2021-01-21)</h2><a id="user-content-173-2021-01-21" class="anchor" aria-label="Permalink: 1.7.3 (2021-01-21)" href="#173-2021-01-21"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-19" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-19"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>handle negatives in protobuf deserialization (<a href="https://www.github.com/googleapis/python-ndb/issues/591">#591</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/0d3d3ca99df10a3d6e1c6f31ee719faa373ccacf">0d3d3ca</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/590">#590</a></li>
<li>make nested retry blocks work for RPC calls (<a href="https://www.github.com/googleapis/python-ndb/issues/589">#589</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f125459d4eef05861776ccefd29d137a5f22e240">f125459</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-8" class="anchor" aria-label="Permalink: Documentation" href="#documentation-8"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>correct documentation for <code>GlobalCache</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/565">#565</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/be5b1571e8e30bd1d736ae5d77b3017473b1a373">be5b157</a>)</li>
<li>fix return type in fetch docstring (<a href="https://www.github.com/googleapis/python-ndb/issues/594">#594</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9eb15f4ff75204ad25f943dbc1e85c227d88faf6">9eb15f4</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/576">#576</a></li>
<li>fix typo in example code (<a href="https://www.github.com/googleapis/python-ndb/issues/588">#588</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/76fab49f9d08a2add4135c011d08ff24f04549b2">76fab49</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.7.1...v1.7.2">1.7.2</a> (2020-12-16)</h2><a id="user-content-172-2020-12-16" class="anchor" aria-label="Permalink: 1.7.2 (2020-12-16)" href="#172-2020-12-16"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-20" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-20"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>always use brute-force counting with Datastore emulator and clean up related hacks (<a href="https://www.github.com/googleapis/python-ndb/issues/585">#585</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/8480a8bd0d169e2499ee62d1fb9d140aa6ce00d4">8480a8b</a>)</li>
<li>return a tuple when empty result returned on query (<a href="https://www.github.com/googleapis/python-ndb/issues/582">#582</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/7cf0e878054dbfe7bc8b6c0c9fea96a602e8e859">7cf0e87</a>)</li>
<li>support empty not_finished messages that cause query.count() to return early (<a href="https://www.github.com/googleapis/python-ndb/issues/580">#580</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/fc31553c77f6e7865df0efd4c820f69366f6607c">fc31553</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/575">#575</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-9" class="anchor" aria-label="Permalink: Documentation" href="#documentation-9"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add urlsafe() info to migration notes (<a href="https://www.github.com/googleapis/python-ndb/issues/579">#579</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9df2f9f8be40d95fbde297335eb99b19bafad583">9df2f9f</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.7.0...v1.7.1">1.7.1</a> (2020-11-11)</h2><a id="user-content-171-2020-11-11" class="anchor" aria-label="Permalink: 1.7.1 (2020-11-11)" href="#171-2020-11-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-21" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-21"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><strong>dependencies:</strong> Pin to less than 2.0.0 for google-cloud-datastore (<a href="https://www.github.com/googleapis/python-ndb/issues/569">#569</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/c8860a6541f638fb458b74cfdffc1ddb7b035549">c8860a6</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/568">#568</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.6.1...v1.7.0">1.7.0</a> (2020-10-22)</h2><a id="user-content-170-2020-10-22" class="anchor" aria-label="Permalink: 1.7.0 (2020-10-22)" href="#170-2020-10-22"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-9" class="anchor" aria-label="Permalink: Features" href="#features-9"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fault tolerance for global caches (<a href="https://www.github.com/googleapis/python-ndb/issues/560">#560</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/8ab8ee01f5577cfe468ed77d3cd48d6f6b816b0e">8ab8ee0</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/557">#557</a></li>
<li>Transaction propagation using ndb.TransactionOptions (<a href="https://www.github.com/googleapis/python-ndb/issues/537">#537</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f3aa027d7d55d9aee9a72ce23cebc26a5975bb28">f3aa027</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.6.0...v1.6.1">1.6.1</a> (2020-10-08)</h2><a id="user-content-161-2020-10-08" class="anchor" aria-label="Permalink: 1.6.1 (2020-10-08)" href="#161-2020-10-08"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-22" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-22"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><code>[@non](https://www.github.com/non)_transactional</code> decorator was not working correctly with async (<a href="https://www.github.com/googleapis/python-ndb/issues/554">#554</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/758c8e66314da4cb1f077e9fbe8cf1ae09bccd4e">758c8e6</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/552">#552</a></li>
<li>fix a connection leak in RedisCache (<a href="https://www.github.com/googleapis/python-ndb/issues/556">#556</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/47ae172edc435a49d25687d83747afff153b59d2">47ae172</a>)</li>
<li>get_by_id and get_or_insert should use default namespace when passed in (<a href="https://www.github.com/googleapis/python-ndb/issues/542">#542</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/3674650a7ba1a1dd7a72b728f343f623f660ba6a">3674650</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/535">#535</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-10" class="anchor" aria-label="Permalink: Documentation" href="#documentation-10"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>address docs builds and memcached customization to docker file (<a href="https://www.github.com/googleapis/python-ndb/issues/548">#548</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/88e7e244854acb2409c324855deb9229f33a44fd">88e7e24</a>)</li>
<li>update docker image used for docs generation <a href="https://www.github.com/googleapis/python-ndb/issues/549">#549</a> (<a href="https://www.github.com/googleapis/python-ndb/commit/5e8bf57508e3b995f51dcc3171e5ea77c4bc4484">5e8bf57</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.5.2...v1.6.0">1.6.0</a> (2020-09-14)</h2><a id="user-content-160-2020-09-14" class="anchor" aria-label="Permalink: 1.6.0 (2020-09-14)" href="#160-2020-09-14"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-10" class="anchor" aria-label="Permalink: Features" href="#features-10"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>memcached integration (<a href="https://www.github.com/googleapis/python-ndb/issues/536">#536</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2bd43dabbd6b6fbffbb4390520e47ae06262c858">2bd43da</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.5.1...v1.5.2">1.5.2</a> (2020-09-03)</h2><a id="user-content-152-2020-09-03" class="anchor" aria-label="Permalink: 1.5.2 (2020-09-03)" href="#152-2020-09-03"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-23" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-23"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>avoid kind error when using subclasses in local structured properties (<a href="https://www.github.com/googleapis/python-ndb/issues/531">#531</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/49f9e48a7d8bf9c3c8cc8a30ae385bcbcb95dbaa">49f9e48</a>)</li>
<li>fix bug when setting naive datetime on <code>DateTimeProperty</code> with timezone (<a href="https://www.github.com/googleapis/python-ndb/issues/534">#534</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/ad426063257f8633bb4207a77b29b35fc0173ec1">ad42606</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/517">#517</a></li>
<li>make optimized <code>Query.count()</code> work with the datastore emulator (<a href="https://www.github.com/googleapis/python-ndb/issues/528">#528</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e5df1e37c97fc0765f8f95ada6d4dadd7b4bb445">e5df1e3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/525">#525</a></li>
<li>make sure <code>keys_only</code> ordered multiquery returns keys not entities (<a href="https://www.github.com/googleapis/python-ndb/issues/527">#527</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2078dc1c2239299729d8ecade2e3592f49bc65db">2078dc1</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/526">#526</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-11" class="anchor" aria-label="Permalink: Documentation" href="#documentation-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix type hint for urlsafe (<a href="https://www.github.com/googleapis/python-ndb/issues/532">#532</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/87a347536b459c461a02c401b8a8c097e276d3ea">87a3475</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/529">#529</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.5.0...v1.5.1">1.5.1</a> (2020-08-28)</h2><a id="user-content-151-2020-08-28" class="anchor" aria-label="Permalink: 1.5.1 (2020-08-28)" href="#151-2020-08-28"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-24" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-24"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix exception handling bug in tasklets (<a href="https://www.github.com/googleapis/python-ndb/issues/520">#520</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/fc0366a9db9fa5263533631cb08ccb5be07960ad">fc0366a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/519">#519</a></li>
<li>fix format exceptions in <code>utils.logging_debug</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/514">#514</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/d38c0a36dac1dc183d344a08050815010b256638">d38c0a3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/508">#508</a></li>
<li>transparently add sort properties to projection for multiqueries (<a href="https://www.github.com/googleapis/python-ndb/issues/511">#511</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/4e463273a36b5fe69f87d429260fba1a690d55b9">4e46327</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/509">#509</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.4.2...v1.5.0">1.5.0</a> (2020-08-12)</h2><a id="user-content-150-2020-08-12" class="anchor" aria-label="Permalink: 1.5.0 (2020-08-12)" href="#150-2020-08-12"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-11" class="anchor" aria-label="Permalink: Features" href="#features-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>use contextvars.ConvextVar instead of threading.local in Python 3 (<a href="https://www.github.com/googleapis/python-ndb/commit/4c634f348f8847fda139fe469e0e8adfabfd649a">4c634f3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/504">#504</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-25" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-25"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix concurrency bug in redis cache implementation (<a href="https://www.github.com/googleapis/python-ndb/issues/503">#503</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/6c18b9522e83e5e599a491c6ed287de2d7cdf089">6c18b95</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/496">#496</a></li>
<li>support polymodel in local structured property (<a href="https://www.github.com/googleapis/python-ndb/issues/497">#497</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9ccbdd23448dcb401b111f03e951fa89ae65174f">9ccbdd2</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/481">#481</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.4.1...v1.4.2">1.4.2</a> (2020-07-30)</h2><a id="user-content-142-2020-07-30" class="anchor" aria-label="Permalink: 1.4.2 (2020-07-30)" href="#142-2020-07-30"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-26" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-26"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>include ancestors in <code>Key.to_legacy_urlsafe</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/494">#494</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/0f2919070ef78a17988fb5cae573a1514ff63926">0f29190</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/478">#478</a></li>
<li>properly handle explicitly passing default namespace (<a href="https://www.github.com/googleapis/python-ndb/issues/488">#488</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/3c644838a499f54620c6a12773f8cdd1c245096f">3c64483</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/476">#476</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.4.0...v1.4.1">1.4.1</a> (2020-07-10)</h2><a id="user-content-141-2020-07-10" class="anchor" aria-label="Permalink: 1.4.1 (2020-07-10)" href="#141-2020-07-10"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-27" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-27"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>do not disclose cache contents in stack traces (<a href="https://www.github.com/googleapis/python-ndb/issues/485">#485</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2d2c5a2004629b807f296f74648c789c6ce9a6ba">2d2c5a2</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/482">#482</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.3.0...v1.4.0">1.4.0</a> (2020-07-01)</h2><a id="user-content-140-2020-07-01" class="anchor" aria-label="Permalink: 1.4.0 (2020-07-01)" href="#140-2020-07-01"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-12" class="anchor" aria-label="Permalink: Features" href="#features-12"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>allow <code>Query.fetch_page</code> for queries with post filters (<a href="https://www.github.com/googleapis/python-ndb/issues/463">#463</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/632435c155f565f5e7b45ab08680613599994f0e">632435c</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/270">#270</a></li>
<li>record time spent waiting on rpc calls (<a href="https://www.github.com/googleapis/python-ndb/issues/472">#472</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/16298057c96921a3c995e9ddded36d37fc90819f">1629805</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-28" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-28"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>ignore datastore properties that are not mapped to NDB properties (<a href="https://www.github.com/googleapis/python-ndb/issues/470">#470</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/ab460fad8ded5b3b550359253e90a6b189145842">ab460fa</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/461">#461</a></li>
<li>make sure <code>tests</code> package is not included in distribution (<a href="https://www.github.com/googleapis/python-ndb/issues/469">#469</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5a20d0af6c6c1c2d10e9e42a35a5b58fa952547c">5a20d0a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/468">#468</a></li>
<li>retry grpc <code>UNKNOWN</code> errors (<a href="https://www.github.com/googleapis/python-ndb/issues/458">#458</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5d354e4b4247372f2ffdc9caa2df1516ce97ff8d">5d354e4</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/310">#310</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.2.1...v1.3.0">1.3.0</a> (2020-06-01)</h2><a id="user-content-130-2020-06-01" class="anchor" aria-label="Permalink: 1.3.0 (2020-06-01)" href="#130-2020-06-01"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-13" class="anchor" aria-label="Permalink: Features" href="#features-13"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add templates for python samples projects (<a href="https://www.github.com/googleapis/python-ndb/issues/506">#506</a>) (<a href="https://www.github.com/googleapis/python-ndb/issues/455">#455</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e32927623645112513675fbbfe5884a63eac24e1">e329276</a>)</li>
<li>convert grpc errors to api core exceptions (<a href="https://www.github.com/googleapis/python-ndb/issues/457">#457</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/042cf6ceabe2a47b2fe77501ccd618e64877886a">042cf6c</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/416">#416</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-29" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-29"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Add support for 'name' Key instances to to_legacy_urlsafe (<a href="https://www.github.com/googleapis/python-ndb/issues/420">#420</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/59fc5afc36d01b72ad4b53befa593803b55df8b3">59fc5af</a>)</li>
<li>all query types should use cache if available (<a href="https://www.github.com/googleapis/python-ndb/issues/454">#454</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/69b3a0ae49ab446a9ed903646ae6e01690411d3e">69b3a0a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/441">#441</a></li>
<li>fix <code>NotImplementedError</code> for <code>get_or_insert</code> inside a transaction (<a href="https://www.github.com/googleapis/python-ndb/issues/451">#451</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/99aa40358b469be1c8486c84ba5873929715f25e">99aa403</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/433">#433</a></li>
<li>make sure datastore key constructor never gets None in a pair (<a href="https://www.github.com/googleapis/python-ndb/issues/446">#446</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e6173cf8feec866c365d35e7cb461f72d19544fa">e6173cf</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/384">#384</a> <a href="https://www.github.com/googleapis/python-ndb/issues/439">#439</a></li>
<li>refactor transactions to use their own event loops (<a href="https://www.github.com/googleapis/python-ndb/issues/443">#443</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/7590be8233fe58f9c45076eb38c1995363f02362">7590be8</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/426">#426</a> <a href="https://www.github.com/googleapis/python-ndb/issues/426">#426</a></li>
<li>respect <code>_code_name</code> in <code>StructuredProperty.__getattr__</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/453">#453</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/4f54dfcee91b15d45cc6046f6b9933d1593d0956">4f54dfc</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/449">#449</a></li>
<li>strip <code>order_by</code> option from query when using <code>count()</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/452">#452</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9d20a2d5d75cc0590c4326019ea94159bb4aebe2">9d20a2d</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/447">#447</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.2.0...v1.2.1">1.2.1</a> (2020-05-15)</h2><a id="user-content-121-2020-05-15" class="anchor" aria-label="Permalink: 1.2.1 (2020-05-15)" href="#121-2020-05-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-14" class="anchor" aria-label="Permalink: Features" href="#features-14"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Improve custom validators (<a href="https://www.github.com/googleapis/python-ndb/issues/408">#408</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5b6cdd627dfce3e5b987c2ecd945d39b5056aa37">5b6cdd6</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/252">#252</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-30" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-30"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>clear context cache on rollback (<a href="https://www.github.com/googleapis/python-ndb/issues/410">#410</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/aa17986759f32ea16c340961d70fbc8fc123b244">aa17986</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/398">#398</a></li>
<li>do not allow empty key parts for key constructor in namespaced model (<a href="https://www.github.com/googleapis/python-ndb/issues/401">#401</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f3528b3e51c93c762c4e31eed76a1b2f06be84e1">f3528b3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/384">#384</a></li>
<li>don't rely on duck typing for <code>_retry.is_transient_error</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/425">#425</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/4524542e5f6da1af047d86fee3d48cf65ea75508">4524542</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/415">#415</a></li>
<li>handle empty batches from Firestore (<a href="https://www.github.com/googleapis/python-ndb/issues/396">#396</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/1a054cadff07074de9395cb99ae2c40f987aed2e">1a054ca</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/386">#386</a></li>
<li>make sure reads happen in transaction if there is a transaction (<a href="https://www.github.com/googleapis/python-ndb/issues/395">#395</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f32644fcf8c16dc0fd74e14108d7955effff1771">f32644f</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/394">#394</a></li>
<li>more should be boolean in fetch_page call (<a href="https://www.github.com/googleapis/python-ndb/issues/423">#423</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/a69ffd21aaaa881f5e8e54339fd62a1b02d19c4b">a69ffd2</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/422">#422</a></li>
<li>support same options in model.query as query (<a href="https://www.github.com/googleapis/python-ndb/issues/407">#407</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/d08019fbecb0f018987267b01929a21e97b418e2">d08019f</a>)</li>
<li>uniform handling of <code>projection</code> argument (<a href="https://www.github.com/googleapis/python-ndb/issues/428">#428</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2b65c04e72a66062e2c792b5b1fb067fb935987f">2b65c04</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/379">#379</a></li>
<li>use <code>skipped_results</code> from query results to adjust offset (<a href="https://www.github.com/googleapis/python-ndb/issues/399">#399</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/6d1452d977f3f030ff65d5cbb3e593c0789e6c14">6d1452d</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/392">#392</a></li>
<li>use fresh context cache for each transaction (<a href="https://www.github.com/googleapis/python-ndb/issues/409">#409</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5109b91425e917727973079020dc51c2b8fddf53">5109b91</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/394">#394</a></li>
<li>use true <code>keys_only</code> query for <code>Query.count()</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/405">#405</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/88184c312dd7bdc7bd36ec58fd53e3fd5001d7ac">88184c3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/400">#400</a> <a href="https://www.github.com/googleapis/python-ndb/issues/404">#404</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.1.2...v1.2.0">1.2.0</a> (2020-04-20)</h2><a id="user-content-120-2020-04-20" class="anchor" aria-label="Permalink: 1.2.0 (2020-04-20)" href="#120-2020-04-20"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-15" class="anchor" aria-label="Permalink: Features" href="#features-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add <code>namespace</code> property to <code>context.Context</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/388">#388</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/34bac153bcc191857715a8760671acaf4fd12706">34bac15</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/385">#385</a></li>
<li>new <code>join</code> argument for <code>transaction</code> and related functions (<a href="https://www.github.com/googleapis/python-ndb/issues/381">#381</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2c916851d088b650a5d643dc322a4919f456fe05">2c91685</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/366">#366</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-31" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-31"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>accept <code>bytes</code> or <code>str</code> as base value for <code>JsonProperty</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/380">#380</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/e7a0c7c8fb7d80f009442f759abadbd336c0c828">e7a0c7c</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/378">#378</a></li>
<li>add <code>ABORTED</code> to retryable status codes (<a href="https://www.github.com/googleapis/python-ndb/issues/391">#391</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/183c0c33a4429ad6bdaa9f141a8ac88ad4e3544d">183c0c3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/383">#383</a></li>
<li>add missing _get_for_dict method (<a href="https://www.github.com/googleapis/python-ndb/issues/368">#368</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/55b80ffa086568e8f820f9ab304952bc39383bd8">55b80ff</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/367">#367</a></li>
<li>empty Entities for optional LocalStructuredProperty fields  (<a href="https://www.github.com/googleapis/python-ndb/issues/370">#370</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/27a0969982013b37d3f6d8785c3ad127788661f9">27a0969</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/369">#369</a></li>
<li>return type in DateTimeProperty._to_base_type docstring (<a href="https://www.github.com/googleapis/python-ndb/issues/371">#371</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/0c549c89ff78554c4a4dde40973b503aa741422f">0c549c8</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.1.1...v1.1.2">1.1.2</a> (2020-03-16)</h2><a id="user-content-112-2020-03-16" class="anchor" aria-label="Permalink: 1.1.2 (2020-03-16)" href="#112-2020-03-16"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-32" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-32"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>check for legacy local structured property values (<a href="https://www.github.com/googleapis/python-ndb/issues/365">#365</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f81f406d8e1059121341828836fce2aae5782fca">f81f406</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/359">#359</a></li>
<li>move stub (grpc communication channel) to client (<a href="https://www.github.com/googleapis/python-ndb/issues/362">#362</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/90e06252df25fa2ce199543e7b01b17ec284aaf1">90e0625</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/343">#343</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.1.0...v1.1.1">1.1.1</a> (2020-03-05)</h2><a id="user-content-111-2020-03-05" class="anchor" aria-label="Permalink: 1.1.1 (2020-03-05)" href="#111-2020-03-05"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-33" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-33"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>fix bug with <code>yield</code> of empty list in tasklets (<a href="https://www.github.com/googleapis/python-ndb/issues/354">#354</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2d60ebfe656abd75f6b9303550b2e03c2cbd79b7">2d60ebf</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/353">#353</a></li>
<li>LocalStructuredProperty keep_keys (<a href="https://www.github.com/googleapis/python-ndb/issues/355">#355</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9ff1b3de817da50b58a6aed574d7e2f2dcf92310">9ff1b3d</a>)</li>
<li>support nested sequences in parallel <code>yield</code> for tasklets (<a href="https://www.github.com/googleapis/python-ndb/issues/358">#358</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/8c91e7ae8262f355a9eafe9051b3c1ef19d4c7cd">8c91e7a</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/349">#349</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.0.1...v1.1.0">1.1.0</a> (2020-03-02)</h2><a id="user-content-110-2020-03-02" class="anchor" aria-label="Permalink: 1.1.0 (2020-03-02)" href="#110-2020-03-02"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Features</h3><a id="user-content-features-16" class="anchor" aria-label="Permalink: Features" href="#features-16"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><code>Key.to_legacy_urlsafe()</code> (<a href="https://www.github.com/googleapis/python-ndb/issues/348">#348</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/ab10e3c4998b8995d5a057163ce8d9dc8992111a">ab10e3c</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-34" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-34"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>allow legacy ndb to read LocalStructuredProperty entities. (<a href="https://www.github.com/googleapis/python-ndb/issues/344">#344</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/7b0769236841cea1e864ae1e928a7b7021d300dc">7b07692</a>)</li>
<li>fix delete in transaction (<a href="https://www.github.com/googleapis/python-ndb/issues/333">#333</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5c162f4337b837f7125b1fb03f8cff5fb1b4a356">5c162f4</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/271">#271</a></li>
<li>make sure <code>key.Key</code> uses namespace from client when not specified (<a href="https://www.github.com/googleapis/python-ndb/issues/339">#339</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/44f02e46deef245f4d1ae80f9d2e4edd46ecd265">44f02e4</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/337">#337</a></li>
<li>properly exclude from indexes non-indexed subproperties of structured properties (<a href="https://www.github.com/googleapis/python-ndb/issues/346">#346</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/dde6b85897457cef7a1080690df5cfae9cb6c31e">dde6b85</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/341">#341</a></li>
<li>resurrect support for compressed text property (<a href="https://www.github.com/googleapis/python-ndb/issues/342">#342</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/5a864563dc6e155b73e2ac35af6519823c356e19">5a86456</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/277">#277</a></li>
<li>use correct name when reading legacy structured properties with names (<a href="https://www.github.com/googleapis/python-ndb/issues/347">#347</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/01d1256e9d41c20bb5836067455c4be4abe1c516">01d1256</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/345">#345</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v1.0.0...v1.0.1">1.0.1</a> (2020-02-11)</h2><a id="user-content-101-2020-02-11" class="anchor" aria-label="Permalink: 1.0.1 (2020-02-11)" href="#101-2020-02-11"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-35" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-35"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>attempt to have fewer transient errors in continuous integration (<a href="https://www.github.com/googleapis/python-ndb/issues/328">#328</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/0484c7abf5a1529db5fecf17ebdf0252eab8449e">0484c7a</a>)</li>
<li>correct migration doc (<a href="https://www.github.com/googleapis/python-ndb/issues/313">#313</a>) (<a href="https://www.github.com/googleapis/python-ndb/issues/317">#317</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/efce24f16a877aecf78264946c22a2c9e3e97f53">efce24f</a>)</li>
<li>disuse <code>__slots__</code> in most places (<a href="https://www.github.com/googleapis/python-ndb/issues/330">#330</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/a8b723b992e7a91860f6a73c0ee0fd7071e574d3">a8b723b</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/311">#311</a></li>
<li>don't set key on structured property entities (<a href="https://www.github.com/googleapis/python-ndb/issues/312">#312</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/63f3d943001d77c1ea0eb9b719e71ecff4eb5dd6">63f3d94</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/281">#281</a></li>
<li>fix race condition in remote calls (<a href="https://www.github.com/googleapis/python-ndb/issues/329">#329</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f5505100f065e71a14714369d8aef1f7b06ee838">f550510</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/302">#302</a></li>
<li>make query options convert projection properties to strings (<a href="https://www.github.com/googleapis/python-ndb/issues/325">#325</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/d1a4800c5f53490e6956c11797bd3472ea404b5b">d1a4800</a>)</li>
<li>use multiple batches of limited size for large operations (<a href="https://www.github.com/googleapis/python-ndb/issues/321">#321</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/8e6945377a4635632d0c35b7a41daebe501d4f0f">8e69453</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/318">#318</a></li>
<li>use six string_types and integer_types for all isinstance() checks (<a href="https://www.github.com/googleapis/python-ndb/issues/323">#323</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/133acf87b2a2efbfeae23ac9f629132cfb368a55">133acf8</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v0.2.2...v1.0.0">1.0.0</a> (2020-01-30)</h2><a id="user-content-100-2020-01-30" class="anchor" aria-label="Permalink: 1.0.0 (2020-01-30)" href="#100-2020-01-30"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-36" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-36"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>add user agent prefix google-cloud-ndb + version (<a href="https://www.github.com/googleapis/python-ndb/issues/299">#299</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9fa136b9c163b24aefde6ccbc227a1035fa24bcd">9fa136b</a>)</li>
<li>Finish implementation of UserProperty. (<a href="https://www.github.com/googleapis/python-ndb/issues/301">#301</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/fd2e0ed9bb6cec8b5651c58eaee2b3ca8a96aebb">fd2e0ed</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/280">#280</a></li>
<li>Fix bug when wrapping base values. (<a href="https://www.github.com/googleapis/python-ndb/issues/303">#303</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/91ca8d9044671361b731323317cef720dd19be82">91ca8d9</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/300">#300</a></li>
<li>Fix bug with the _GlobalCacheGetBatch. (<a href="https://www.github.com/googleapis/python-ndb/issues/305">#305</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/f2131654c6e5f67895fb0e3c09a507e8dc25c4bb">f213165</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/294">#294</a></li>
<li>Preserve <code>QueryIterator.cursor_after</code>. (<a href="https://www.github.com/googleapis/python-ndb/issues/296">#296</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/4ffedc7b5a2366be15dcd299052d8a46a748addd">4ffedc7</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/292">#292</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v0.2.1...v0.2.2">0.2.2</a> (2020-01-15)</h2><a id="user-content-022-2020-01-15" class="anchor" aria-label="Permalink: 0.2.2 (2020-01-15)" href="#022-2020-01-15"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-37" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-37"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Convert NDB keys to Datastore keys for serialization. (<a href="https://www.github.com/googleapis/python-ndb/issues/287">#287</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/779411b562575bd2d6f0627ce1903c2996f3c529">779411b</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/284">#284</a></li>
<li>fix missing <strong>ne</strong> methods (<a href="https://www.github.com/googleapis/python-ndb/issues/279">#279</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/03dd5e1c78b8e8354379d743e2f810ef1bece4d2">03dd5e1</a>)</li>
<li>Fix repr() for ComputedProperty (<a href="https://www.github.com/googleapis/python-ndb/issues/291">#291</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2d8857b8e9a7119a47fd72ae76401af4e42bb5b5">2d8857b</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/256">#256</a></li>
<li>Handle <code>int</code> for DateTimeProperty (<a href="https://www.github.com/googleapis/python-ndb/issues/285">#285</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/2fe5be31784a036062180f9c0f2c7b5eda978123">2fe5be3</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/261">#261</a></li>
<li>More friendly error message when using <code>fetch_page</code> with post-filters. (<a href="https://www.github.com/googleapis/python-ndb/issues/269">#269</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/a40ae74d74fa83119349de4b3a91f90df40d7ea5">a40ae74</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/254">#254</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto"><a href="https://www.github.com/googleapis/python-ndb/compare/v0.2.0...v0.2.1">0.2.1</a> (2019-12-10)</h2><a id="user-content-021-2019-12-10" class="anchor" aria-label="Permalink: 0.2.1 (2019-12-10)" href="#021-2019-12-10"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Bug Fixes</h3><a id="user-content-bug-fixes-38" class="anchor" aria-label="Permalink: Bug Fixes" href="#bug-fixes-38"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Correctly handle <code>limit</code> and <code>offset</code> when batching query results. (<a href="https://www.github.com/googleapis/python-ndb/issues/237">#237</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/8d3ce5c6cce9055d21400aa9feebc99e66393667">8d3ce5c</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/236">#236</a></li>
<li>Improve test cleanup. (<a href="https://www.github.com/googleapis/python-ndb/issues/234">#234</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/21f3d8b12a3e2fefe488a951fb5186c7620cb864">21f3d8b</a>)</li>
<li>IntegerProperty now accepts <code>long</code> type for Python 2.7. (<a href="https://www.github.com/googleapis/python-ndb/issues/262">#262</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/9591e569db32769c449d60dd3d9bdd6772dbc8f6">9591e56</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/250">#250</a></li>
<li>Unstable order bug in unit test. (<a href="https://www.github.com/googleapis/python-ndb/issues/251">#251</a>) (<a href="https://www.github.com/googleapis/python-ndb/commit/7ff1df51056f8498dc4320fc4b2684ead34a9116">7ff1df5</a>), closes <a href="https://www.github.com/googleapis/python-ndb/issues/244">#244</a></li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">0.2.0</h2><a id="user-content-020" class="anchor" aria-label="Permalink: 0.2.0" href="#020"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">11-06-2019 10:39 PST</p>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Implementation Changes</h3><a id="user-content-implementation-changes" class="anchor" aria-label="Permalink: Implementation Changes" href="#implementation-changes"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li><code>query.map()</code> and <code>query.map_async()</code> hanging with empty result set. (<a href="https://github.com/googleapis/python-ndb/pull/230" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/230/hovercard">#230</a>)</li>
<li>remove dunder version (<a href="https://github.com/googleapis/python-ndb/pull/202" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/202/hovercard">#202</a>)</li>
<li>Check context (<a href="https://github.com/googleapis/python-ndb/pull/211" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/211/hovercard">#211</a>)</li>
<li>Fix <code>Model._gql</code>. (<a href="https://github.com/googleapis/python-ndb/pull/223" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/223/hovercard">#223</a>)</li>
<li>Update intersphinx mapping (<a href="https://github.com/googleapis/python-ndb/pull/206" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/206/hovercard">#206</a>)</li>
<li>do not set meanings for compressed property when it has no value (<a href="https://github.com/googleapis/python-ndb/pull/200" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/200/hovercard">#200</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">New Features</h3><a id="user-content-new-features" class="anchor" aria-label="Permalink: New Features" href="#new-features"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Python 2.7 compatibility (<a href="https://github.com/googleapis/python-ndb/pull/203" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/203/hovercard">#203</a>)</li>
<li>Add <code>tzinfo</code> to DateTimeProperty. (<a href="https://github.com/googleapis/python-ndb/pull/226" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/226/hovercard">#226</a>)</li>
<li>Implement <code>_prepare_for_put</code> for <code>StructuredProperty</code> and <code>LocalStructuredProperty</code>. (<a href="https://github.com/googleapis/python-ndb/pull/221" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/221/hovercard">#221</a>)</li>
<li>Implement <code>Query.map</code> and <code>Query.map_async</code>. (<a href="https://github.com/googleapis/python-ndb/pull/218" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/218/hovercard">#218</a>)</li>
<li>Allow class member values in projection and distinct queries  (<a href="https://github.com/googleapis/python-ndb/pull/214" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/214/hovercard">#214</a>)</li>
<li>Implement <code>Future.cancel()</code> (<a href="https://github.com/googleapis/python-ndb/pull/204" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/204/hovercard">#204</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-12" class="anchor" aria-label="Permalink: Documentation" href="#documentation-12"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Update README to include Python 2 support. (<a href="https://github.com/googleapis/python-ndb/pull/231" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/231/hovercard">#231</a>)</li>
<li>Fix typo in MIGRATION_NOTES.md (<a href="https://github.com/googleapis/python-ndb/pull/208" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/208/hovercard">#208</a>)</li>
<li>Spelling fixes. (<a href="https://github.com/googleapis/python-ndb/pull/209" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/209/hovercard">#209</a>)</li>
<li>Add spell checking dependencies for documentation build. (<a href="https://github.com/googleapis/python-ndb/pull/196" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/196/hovercard">#196</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Internal / Testing Changes</h3><a id="user-content-internal--testing-changes" class="anchor" aria-label="Permalink: Internal / Testing Changes" href="#internal--testing-changes"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Enable release-please (<a href="https://github.com/googleapis/python-ndb/pull/228" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/228/hovercard">#228</a>)</li>
<li>Introduce local redis for tests (<a href="https://github.com/googleapis/python-ndb/pull/191" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/191/hovercard">#191</a>)</li>
<li>Use .kokoro configs from templates. (<a href="https://github.com/googleapis/python-ndb/pull/194" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/194/hovercard">#194</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">0.1.0</h2><a id="user-content-010" class="anchor" aria-label="Permalink: 0.1.0" href="#010"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">09-10-2019 13:43 PDT</p>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Deprecations</h3><a id="user-content-deprecations" class="anchor" aria-label="Permalink: Deprecations" href="#deprecations"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Deprecate <code>max_memcache_items</code>, memcache options, <code>force_rewrites</code>, <code>Query.map()</code>, <code>Query.map_async()</code>, <code>blobstore</code>. (<a href="https://github.com/googleapis/python-ndb/pull/168" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/168/hovercard">#168</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Implementation Changes</h3><a id="user-content-implementation-changes-1" class="anchor" aria-label="Permalink: Implementation Changes" href="#implementation-changes-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Fix error retrieving values for properties with different stored name (<a href="https://github.com/googleapis/python-ndb/pull/187" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/187/hovercard">#187</a>)</li>
<li>Use correct class when deserializing a PolyModel entity. (<a href="https://github.com/googleapis/python-ndb/pull/186" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/186/hovercard">#186</a>)</li>
<li>Support legacy compressed properties back and forth (<a href="https://github.com/googleapis/python-ndb/pull/183" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/183/hovercard">#183</a>)</li>
<li>Store Structured Properties in backwards compatible way (<a href="https://github.com/googleapis/python-ndb/pull/184" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/184/hovercard">#184</a>)</li>
<li>Allow put and get to work with compressed blob properties (<a href="https://github.com/googleapis/python-ndb/pull/175" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/175/hovercard">#175</a>)</li>
<li>Raise an exception when storing entity with partial key without Datastore. (<a href="https://github.com/googleapis/python-ndb/pull/171" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/171/hovercard">#171</a>)</li>
<li>Normalize to prefer <code>project</code> over <code>app</code>. (<a href="https://github.com/googleapis/python-ndb/pull/170" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/170/hovercard">#170</a>)</li>
<li>Enforce naive datetimes for <code>DateTimeProperty</code>. (<a href="https://github.com/googleapis/python-ndb/pull/167" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/167/hovercard">#167</a>)</li>
<li>Handle projections with structured properties. (<a href="https://github.com/googleapis/python-ndb/pull/166" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/166/hovercard">#166</a>)</li>
<li>Fix polymodel put and get (<a href="https://github.com/googleapis/python-ndb/pull/151" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/151/hovercard">#151</a>)</li>
<li><code>_prepare_for_put</code> was not being called at entity level (<a href="https://github.com/googleapis/python-ndb/pull/138" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/138/hovercard">#138</a>)</li>
<li>Fix key property. (<a href="https://github.com/googleapis/python-ndb/pull/136" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/136/hovercard">#136</a>)</li>
<li>Fix thread local context. (<a href="https://github.com/googleapis/python-ndb/pull/131" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/131/hovercard">#131</a>)</li>
<li>Bugfix: Respect <code>_indexed</code> flag of properties. (<a href="https://github.com/googleapis/python-ndb/pull/127" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/127/hovercard">#127</a>)</li>
<li>Backwards compatibility with older style structured properties. (<a href="https://github.com/googleapis/python-ndb/pull/126" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/126/hovercard">#126</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">New Features</h3><a id="user-content-new-features-1" class="anchor" aria-label="Permalink: New Features" href="#new-features-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Read legacy data with Repeated Structured Expando properties. (<a href="https://github.com/googleapis/python-ndb/pull/176" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/176/hovercard">#176</a>)</li>
<li>Implement <code>Context.call_on_commit</code>. (<a href="https://github.com/googleapis/python-ndb/pull/159" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/159/hovercard">#159</a>)</li>
<li>Implement <code>Context.flush</code> (<a href="https://github.com/googleapis/python-ndb/pull/158" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/158/hovercard">#158</a>)</li>
<li>Implement <code>use_datastore</code> flag. (<a href="https://github.com/googleapis/python-ndb/pull/155" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/155/hovercard">#155</a>)</li>
<li>Implement <code>tasklets.toplevel</code>. (<a href="https://github.com/googleapis/python-ndb/pull/157" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/157/hovercard">#157</a>)</li>
<li>Add RedisCache implementation of global cache (<a href="https://github.com/googleapis/python-ndb/pull/150" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/150/hovercard">#150</a>)</li>
<li>Implement Global Cache (<a href="https://github.com/googleapis/python-ndb/pull/148" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/148/hovercard">#148</a>)</li>
<li>ndb.Expando properties load and save (<a href="https://github.com/googleapis/python-ndb/pull/117" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/117/hovercard">#117</a>)</li>
<li>Implement cache policy. (<a href="https://github.com/googleapis/python-ndb/pull/116" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/116/hovercard">#116</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-13" class="anchor" aria-label="Permalink: Documentation" href="#documentation-13"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Fix Kokoro publish-docs job (<a href="https://github.com/googleapis/python-ndb/pull/153" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/153/hovercard">#153</a>)</li>
<li>Update Migration Notes. (<a href="https://github.com/googleapis/python-ndb/pull/152" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/152/hovercard">#152</a>)</li>
<li>Add <code>project_urls</code> for pypi page (<a href="https://github.com/googleapis/python-ndb/pull/144" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/144/hovercard">#144</a>)</li>
<li>Fix <code>TRAMPOLINE_BUILD_FILE</code> in docs/common.cfg. (<a href="https://github.com/googleapis/python-ndb/pull/143" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/143/hovercard">#143</a>)</li>
<li>Add kokoro docs job to publish to googleapis.dev. (<a href="https://github.com/googleapis/python-ndb/pull/142" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/142/hovercard">#142</a>)</li>
<li>Initial version of migration guide (<a href="https://github.com/googleapis/python-ndb/pull/121" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/121/hovercard">#121</a>)</li>
<li>Add spellcheck sphinx extension to docs build process (<a href="https://github.com/googleapis/python-ndb/pull/123" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/123/hovercard">#123</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Internal / Testing Changes</h3><a id="user-content-internal--testing-changes-1" class="anchor" aria-label="Permalink: Internal / Testing Changes" href="#internal--testing-changes-1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Clean up usage of <code>object.__new__</code> and mocks for <code>Model</code> in unit tests (<a href="https://github.com/googleapis/python-ndb/pull/177" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/177/hovercard">#177</a>)</li>
<li>Prove tasklets can be Python 2.7 and 3.7 compatible. (<a href="https://github.com/googleapis/python-ndb/pull/174" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/174/hovercard">#174</a>)</li>
<li>Discard src directory and fix flake8 failures (<a href="https://github.com/googleapis/python-ndb/pull/173" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/173/hovercard">#173</a>)</li>
<li>Add tests for <code>Model.__eq__()</code> (<a href="https://github.com/googleapis/python-ndb/pull/169" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/169/hovercard">#169</a>)</li>
<li>Remove skip flag accidentally left over (<a href="https://github.com/googleapis/python-ndb/pull/154" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/154/hovercard">#154</a>)</li>
<li>Try to get kokoro to add indexes for system tests (<a href="https://github.com/googleapis/python-ndb/pull/145" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/145/hovercard">#145</a>)</li>
<li>Add system test for PolyModel (<a href="https://github.com/googleapis/python-ndb/pull/133" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/133/hovercard">#133</a>)</li>
<li>Fix system test under Datastore Emulator. (Fixes <a href="https://github.com/googleapis/python-ndb/pull/118" data-hovercard-type="issue" data-hovercard-url="/googleapis/python-ndb/issues/118/hovercard">#118</a>) (<a href="https://github.com/googleapis/python-ndb/pull/119" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/119/hovercard">#119</a>)</li>
<li>Add unit tests for <code>_entity_from_ds_entity</code> expando support (<a href="https://github.com/googleapis/python-ndb/pull/120" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/120/hovercard">#120</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">0.0.1</h2><a id="user-content-001" class="anchor" aria-label="Permalink: 0.0.1" href="#001"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">06-11-2019 16:30 PDT</p>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Implementation Changes</h3><a id="user-content-implementation-changes-2" class="anchor" aria-label="Permalink: Implementation Changes" href="#implementation-changes-2"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Query repeated structured properties. (<a href="https://github.com/googleapis/python-ndb/pull/103" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/103/hovercard">#103</a>)</li>
<li>Fix Structured Properties (<a href="https://github.com/googleapis/python-ndb/pull/102" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/102/hovercard">#102</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">New Features</h3><a id="user-content-new-features-2" class="anchor" aria-label="Permalink: New Features" href="#new-features-2"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>Implement expando model (<a href="https://github.com/googleapis/python-ndb/pull/99" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/99/hovercard">#99</a>)</li>
<li>Model properties (<a href="https://github.com/googleapis/python-ndb/pull/96" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/96/hovercard">#96</a>)</li>
<li>Implemented tasklets.synctasklet (<a href="https://github.com/googleapis/python-ndb/pull/58" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/58/hovercard">#58</a>)</li>
<li>Implement LocalStructuredProperty (<a href="https://github.com/googleapis/python-ndb/pull/93" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/93/hovercard">#93</a>)</li>
<li>Implement hooks. (<a href="https://github.com/googleapis/python-ndb/pull/95" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/95/hovercard">#95</a>)</li>
<li>Three easy Model methods. (<a href="https://github.com/googleapis/python-ndb/pull/94" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/94/hovercard">#94</a>)</li>
<li>Model.get or insert (<a href="https://github.com/googleapis/python-ndb/pull/92" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/92/hovercard">#92</a>)</li>
<li>Implement <code>Model.get_by_id</code> and <code>Model.get_by_id_async</code>.</li>
<li>Implement <code>Model.allocate_ids</code> and <code>Model.allocate_ids_async</code>.</li>
<li>Implement <code>Query.fetch_page</code> and <code>Query.fetch_page_async</code>.</li>
<li>Implement <code>Query.count</code> and <code>Query.count_async</code></li>
<li>Implement <code>Query.get</code> and <code>Query.get_async</code>.</li>
</ul>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Documentation</h3><a id="user-content-documentation-14" class="anchor" aria-label="Permalink: Documentation" href="#documentation-14"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<ul dir="auto">
<li>update sphinx version and eliminate all warnings (<a href="https://github.com/googleapis/python-ndb/pull/105" data-hovercard-type="pull_request" data-hovercard-url="/googleapis/python-ndb/pull/105/hovercard">#105</a>)</li>
</ul>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">0.0.1dev1</h2><a id="user-content-001dev1" class="anchor" aria-label="Permalink: 0.0.1dev1" href="#001dev1"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Initial development release of NDB client library.</p>
</article></div><div class="d-none"></div></section></div></div></div> </div> <!-- --> </div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
</react-app>




  </div>

</turbo-frame>

    </main>
  </div>

  </div>

          <footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo"  >
  <h2 class='sr-only'>Footer</h2>

  


  <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
    <div class="d-flex flex-items-center flex-shrink-0 mx-2">
      <a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
        <svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
    <path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
</svg>
</a>
      <span>
        &copy; 2026 GitHub,&nbsp;Inc.
      </span>
    </div>

    <nav aria-label="Footer">
      <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

      <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">


          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
          </li>


            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
          </li>

          
<li class="mx-2" >
  <cookie-consent-link>
    <button
      type="button"
      class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
      data-action="click:cookie-consent-link#showConsentManagement"
      data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}"
    >
      Manage cookies
    </button>
  </cookie-consent-link>
</li>

  <li class="mx-2">
    <cookie-consent-link>
      <button
        type="button"
        class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
        data-action="click:cookie-consent-link#showConsentManagement"
        data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}"
      >
        Do not share my personal information
      </button>
    </cookie-consent-link>
  </li>

      </ul>
    </nav>
  </div>
</footer>



    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="true"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

