Skip to content

fix(functions): port main's changes to v3 - #1794

Open
spydon wants to merge 9 commits into
v3-sync/03-supabasefrom
v3-sync/04-functions
Open

spydon wants to merge 9 commits into
v3-sync/03-supabasefrom
v3-sync/04-functions

Conversation

@spydon

@spydon spydon commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Cherry-picks main's functions commits onto v3, ported to v3's single client.py. Where v3 already had the behavior, only the tests are ported, and the commit message says so.

  • Skipped 42549e4 (verify keyword in create_client): v3's clients have no verify parameter.

Review fixes

  • utils: Response.is_success no longer accepts 300. Functions now uses the shared request types, so _BodyRequest is gone.
  • invoke() sends lists as JSON, raises TypeError for unsupported bodies, and documents its parameters.
  • Error messages fall back to the message key and then the raw body, and structured errors are rendered as JSON.
  • utils: a Content-Type is kept only when the request itself sets it, so a client-wide Content-Type no longer mislabels JSON bodies in auth, postgrest and storage. Functions still applies a client-level Content-Type, as on main.
  • invoke() accepts a region string, as on main, and region overrides an x-region header instead of appending to it.

Commits

Stack

This replaces #1789: main's changes since 6f522d3 are cherry-picked onto v3 one package at a time, so each part can be reviewed on its own. Merge from the bottom up.

  1. chore: sync CI, dependency and tooling changes from main #1791
  2. fix: v3 fixes found while syncing main #1792
  3. fix(supabase): sync client options fix from main #1793
  4. fix(functions): port main's changes to v3 #1794 (this PR)
  5. fix(auth): port main's changes to v3 #1795
  6. fix(postgrest): port main's changes to v3 #1796
  7. fix(storage): port main's changes to v3 #1797
  8. fix(realtime): port main's changes to v3 #1798
  9. chore: sync sdk-compliance.yaml with the v3 public API #1790

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Capability matrix drift detected

The following capabilities are marked implemented in the matrix but could not be found in python:

  • auth.sign_in.sign_up → expected symbol: AsyncGoTrueClient.sign_up
  • auth.sign_in.sign_up → expected symbol: SyncGoTrueClient.sign_up
  • auth.sign_in.sign_in_with_password → expected symbol: AsyncGoTrueClient.sign_in_with_password
  • auth.sign_in.sign_in_with_password → expected symbol: SyncGoTrueClient.sign_in_with_password
  • auth.sign_in.sign_in_with_oauth → expected symbol: AsyncGoTrueClient.sign_in_with_oauth
  • auth.sign_in.sign_in_with_oauth → expected symbol: SyncGoTrueClient.sign_in_with_oauth
  • auth.sign_in.sign_in_with_otp → expected symbol: AsyncGoTrueClient.sign_in_with_otp
  • auth.sign_in.sign_in_with_otp → expected symbol: SyncGoTrueClient.sign_in_with_otp
  • auth.sign_in.sign_in_with_sso → expected symbol: AsyncGoTrueClient.sign_in_with_sso
  • auth.sign_in.sign_in_with_sso → expected symbol: SyncGoTrueClient.sign_in_with_sso
  • auth.sign_in.sign_in_with_id_token → expected symbol: AsyncGoTrueClient.sign_in_with_id_token
  • auth.sign_in.sign_in_with_id_token → expected symbol: SyncGoTrueClient.sign_in_with_id_token
  • auth.sign_in.sign_in_anonymously → expected symbol: AsyncGoTrueClient.sign_in_anonymously
  • auth.sign_in.sign_in_anonymously → expected symbol: SyncGoTrueClient.sign_in_anonymously
  • auth.sign_in.verify_otp → expected symbol: AsyncGoTrueClient.verify_otp
  • auth.sign_in.verify_otp → expected symbol: SyncGoTrueClient.verify_otp
  • auth.sign_in.resend_confirmation → expected symbol: AsyncGoTrueClient.resend
  • auth.sign_in.resend_confirmation → expected symbol: SyncGoTrueClient.resend
  • auth.sign_in.send_password_reset_email → expected symbol: AsyncGoTrueClient.reset_password_for_email
  • auth.sign_in.send_password_reset_email → expected symbol: SyncGoTrueClient.reset_password_for_email
  • auth.sign_in.reauthenticate → expected symbol: AsyncGoTrueClient.reauthenticate
  • auth.sign_in.reauthenticate → expected symbol: SyncGoTrueClient.reauthenticate
  • auth.sign_in.exchange_code_for_session → expected symbol: AsyncGoTrueClient.exchange_code_for_session
  • auth.sign_in.exchange_code_for_session → expected symbol: SyncGoTrueClient.exchange_code_for_session
  • auth.session.get_session → expected symbol: AsyncGoTrueClient.get_session
  • auth.session.get_session → expected symbol: SyncGoTrueClient.get_session
  • auth.session.get_user → expected symbol: AsyncGoTrueClient.get_user
  • auth.session.get_user → expected symbol: SyncGoTrueClient.get_user
  • auth.session.get_claims → expected symbol: AsyncGoTrueClient.get_claims
  • auth.session.get_claims → expected symbol: SyncGoTrueClient.get_claims
  • auth.session.refresh_session → expected symbol: AsyncGoTrueClient.refresh_session
  • auth.session.refresh_session → expected symbol: SyncGoTrueClient.refresh_session
  • auth.session.set_session → expected symbol: AsyncGoTrueClient.set_session
  • auth.session.set_session → expected symbol: SyncGoTrueClient.set_session
  • auth.session.sign_out → expected symbol: AsyncGoTrueClient.sign_out
  • auth.session.sign_out → expected symbol: SyncGoTrueClient.sign_out
  • auth.session.update_user → expected symbol: AsyncGoTrueClient.update_user
  • auth.session.update_user → expected symbol: SyncGoTrueClient.update_user
  • auth.session.subscribe_auth_events → expected symbol: AsyncGoTrueClient.on_auth_state_change
  • auth.session.subscribe_auth_events → expected symbol: SyncGoTrueClient.on_auth_state_change
  • auth.identities.link_identity → expected symbol: AsyncGoTrueClient.link_identity
  • auth.identities.link_identity → expected symbol: SyncGoTrueClient.link_identity
  • auth.identities.unlink_identity → expected symbol: AsyncGoTrueClient.unlink_identity
  • auth.identities.unlink_identity → expected symbol: SyncGoTrueClient.unlink_identity
  • auth.identities.list_identities → expected symbol: AsyncGoTrueClient.get_user_identities
  • auth.identities.list_identities → expected symbol: SyncGoTrueClient.get_user_identities
  • auth.mfa.enroll → expected symbol: AsyncGoTrueMFAAPI.enroll
  • auth.mfa.enroll → expected symbol: SyncGoTrueMFAAPI.enroll
  • auth.mfa.challenge → expected symbol: AsyncGoTrueMFAAPI.challenge
  • auth.mfa.challenge → expected symbol: SyncGoTrueMFAAPI.challenge
  • auth.mfa.verify → expected symbol: AsyncGoTrueMFAAPI.verify
  • auth.mfa.verify → expected symbol: SyncGoTrueMFAAPI.verify
  • auth.mfa.unenroll → expected symbol: AsyncGoTrueMFAAPI.unenroll
  • auth.mfa.unenroll → expected symbol: SyncGoTrueMFAAPI.unenroll
  • auth.mfa.challenge_and_verify → expected symbol: AsyncGoTrueMFAAPI.challenge_and_verify
  • auth.mfa.challenge_and_verify → expected symbol: SyncGoTrueMFAAPI.challenge_and_verify
  • auth.mfa.list_factors → expected symbol: AsyncGoTrueMFAAPI.list_factors
  • auth.mfa.list_factors → expected symbol: SyncGoTrueMFAAPI.list_factors
  • auth.mfa.get_authenticator_assurance_level → expected symbol: AsyncGoTrueMFAAPI.get_authenticator_assurance_level
  • auth.mfa.get_authenticator_assurance_level → expected symbol: SyncGoTrueMFAAPI.get_authenticator_assurance_level
  • auth.admin.create_user → expected symbol: AsyncGoTrueAdminAPI.create_user
  • auth.admin.create_user → expected symbol: SyncGoTrueAdminAPI.create_user
  • auth.admin.delete_user → expected symbol: AsyncGoTrueAdminAPI.delete_user
  • auth.admin.delete_user → expected symbol: SyncGoTrueAdminAPI.delete_user
  • auth.admin.update_user → expected symbol: AsyncGoTrueAdminAPI.update_user_by_id
  • auth.admin.update_user → expected symbol: SyncGoTrueAdminAPI.update_user_by_id
  • auth.admin.get_user → expected symbol: AsyncGoTrueAdminAPI.get_user_by_id
  • auth.admin.get_user → expected symbol: SyncGoTrueAdminAPI.get_user_by_id
  • auth.admin.list_users → expected symbol: AsyncGoTrueAdminAPI.list_users
  • auth.admin.list_users → expected symbol: SyncGoTrueAdminAPI.list_users
  • auth.admin.invite_user → expected symbol: AsyncGoTrueAdminAPI.invite_user_by_email
  • auth.admin.invite_user → expected symbol: SyncGoTrueAdminAPI.invite_user_by_email
  • auth.admin.sign_out → expected symbol: AsyncGoTrueAdminAPI.sign_out
  • auth.admin.sign_out → expected symbol: SyncGoTrueAdminAPI.sign_out
  • auth.admin.generate_link → expected symbol: AsyncGoTrueAdminAPI.generate_link
  • auth.admin.generate_link → expected symbol: SyncGoTrueAdminAPI.generate_link
  • auth.admin.list_mfa_factors → expected symbol: AsyncGoTrueAdminMFAAPI.list_factors
  • auth.admin.list_mfa_factors → expected symbol: SyncGoTrueAdminMFAAPI.list_factors
  • auth.admin.delete_mfa_factor → expected symbol: AsyncGoTrueAdminMFAAPI.delete_factor
  • auth.admin.delete_mfa_factor → expected symbol: SyncGoTrueAdminMFAAPI.delete_factor
  • auth.oauth_admin.create_client → expected symbol: AsyncGoTrueAdminOAuthAPI.create_client
  • auth.oauth_admin.create_client → expected symbol: SyncGoTrueAdminOAuthAPI.create_client
  • auth.oauth_admin.delete_client → expected symbol: AsyncGoTrueAdminOAuthAPI.delete_client
  • auth.oauth_admin.delete_client → expected symbol: SyncGoTrueAdminOAuthAPI.delete_client
  • auth.oauth_admin.get_client → expected symbol: AsyncGoTrueAdminOAuthAPI.get_client
  • auth.oauth_admin.get_client → expected symbol: SyncGoTrueAdminOAuthAPI.get_client
  • auth.oauth_admin.list_clients → expected symbol: AsyncGoTrueAdminOAuthAPI.list_clients
  • auth.oauth_admin.list_clients → expected symbol: SyncGoTrueAdminOAuthAPI.list_clients
  • auth.oauth_admin.regenerate_client_secret → expected symbol: AsyncGoTrueAdminOAuthAPI.regenerate_client_secret
  • auth.oauth_admin.regenerate_client_secret → expected symbol: SyncGoTrueAdminOAuthAPI.regenerate_client_secret
  • auth.oauth_admin.update_client → expected symbol: AsyncGoTrueAdminOAuthAPI.update_client
  • auth.oauth_admin.update_client → expected symbol: SyncGoTrueAdminOAuthAPI.update_client
  • database.query.from_table → expected symbol: AsyncPostgrestClient.from_
  • database.query.from_table → expected symbol: AsyncPostgrestClient.table
  • database.query.from_table → expected symbol: SyncPostgrestClient.from_
  • database.query.from_table → expected symbol: SyncPostgrestClient.table
  • database.query.select → expected symbol: AsyncRequestBuilder.select
  • database.query.select → expected symbol: SyncRequestBuilder.select
  • database.query.rpc → expected symbol: AsyncPostgrestClient.rpc
  • database.query.rpc → expected symbol: SyncPostgrestClient.rpc
  • database.mutate.insert → expected symbol: AsyncRequestBuilder.insert
  • database.mutate.insert → expected symbol: SyncRequestBuilder.insert
  • database.mutate.update → expected symbol: AsyncRequestBuilder.update
  • database.mutate.update → expected symbol: SyncRequestBuilder.update
  • database.mutate.upsert → expected symbol: AsyncRequestBuilder.upsert
  • database.mutate.upsert → expected symbol: SyncRequestBuilder.upsert
  • database.mutate.delete → expected symbol: AsyncRequestBuilder.delete
  • database.mutate.delete → expected symbol: SyncRequestBuilder.delete
  • database.using_modifiers.single_row → expected symbol: AsyncSelectRequestBuilder.single
  • database.using_modifiers.single_row → expected symbol: SyncSelectRequestBuilder.single
  • database.using_modifiers.maybe_single_row → expected symbol: AsyncSelectRequestBuilder.maybe_single
  • database.using_modifiers.maybe_single_row → expected symbol: SyncSelectRequestBuilder.maybe_single
  • database.using_modifiers.format_csv → expected symbol: AsyncSelectRequestBuilder.csv
  • database.using_modifiers.format_csv → expected symbol: SyncSelectRequestBuilder.csv
  • database.using_modifiers.explain → expected symbol: AsyncSelectRequestBuilder.explain
  • database.using_modifiers.explain → expected symbol: SyncSelectRequestBuilder.explain
  • database.configuration.auto_retry → expected symbol: AsyncSelectRequestBuilder.retry
  • database.configuration.auto_retry → expected symbol: SyncSelectRequestBuilder.retry
  • functions.invocation.invoke → expected symbol: AsyncFunctionsClient.invoke
  • functions.invocation.invoke → expected symbol: SyncFunctionsClient.invoke
  • functions.invocation.set_auth_token → expected symbol: AsyncFunctionsClient.set_auth
  • functions.invocation.set_auth_token → expected symbol: SyncFunctionsClient.set_auth
  • realtime.client.connect → expected symbol: AsyncRealtimeClient.connect
  • realtime.client.connect → expected symbol: SyncRealtimeClient.connect
  • realtime.client.disconnect → expected symbol: AsyncRealtimeClient.disconnect
  • realtime.client.disconnect → expected symbol: SyncRealtimeClient.disconnect
  • realtime.client.get_channels → expected symbol: AsyncRealtimeClient.get_channels
  • realtime.client.get_channels → expected symbol: SyncRealtimeClient.get_channels
  • realtime.client.remove_channel → expected symbol: AsyncRealtimeClient.remove_channel
  • realtime.client.remove_channel → expected symbol: SyncRealtimeClient.remove_channel
  • realtime.client.remove_all_channels → expected symbol: AsyncRealtimeClient.remove_all_channels
  • realtime.client.remove_all_channels → expected symbol: SyncRealtimeClient.remove_all_channels
  • realtime.client.set_auth_token → expected symbol: AsyncRealtimeClient.set_auth
  • realtime.client.set_auth_token → expected symbol: SyncRealtimeClient.set_auth
  • realtime.client.channel → expected symbol: AsyncRealtimeClient.channel
  • realtime.client.channel → expected symbol: SyncRealtimeClient.channel
  • realtime.channel.subscribe → expected symbol: AsyncRealtimeChannel.subscribe
  • realtime.channel.subscribe → expected symbol: SyncRealtimeChannel.subscribe
  • realtime.channel.unsubscribe → expected symbol: AsyncRealtimeChannel.unsubscribe
  • realtime.channel.unsubscribe → expected symbol: SyncRealtimeChannel.unsubscribe
  • realtime.channel.broadcast → expected symbol: AsyncRealtimeChannel.send_broadcast
  • realtime.channel.broadcast → expected symbol: SyncRealtimeChannel.send_broadcast
  • realtime.subscriptions.broadcast → expected symbol: AsyncRealtimeChannel.on_broadcast
  • realtime.subscriptions.broadcast → expected symbol: SyncRealtimeChannel.on_broadcast
  • realtime.subscriptions.postgres_changes → expected symbol: AsyncRealtimeChannel.on_postgres_changes
  • realtime.subscriptions.postgres_changes → expected symbol: SyncRealtimeChannel.on_postgres_changes
  • realtime.subscriptions.subscribe_presence → expected symbol: AsyncRealtimeChannel.on_presence_change
  • realtime.subscriptions.subscribe_presence → expected symbol: SyncRealtimeChannel.on_presence_change
  • realtime.presence.track → expected symbol: AsyncRealtimeChannel.track
  • realtime.presence.track → expected symbol: SyncRealtimeChannel.track
  • realtime.presence.untrack → expected symbol: AsyncRealtimeChannel.untrack
  • realtime.presence.untrack → expected symbol: SyncRealtimeChannel.untrack
  • realtime.presence.presence_state → expected symbol: AsyncRealtimeChannel.presences
  • realtime.presence.presence_state → expected symbol: SyncRealtimeChannel.presences
  • storage.file_buckets.create_file_bucket → expected symbol: AsyncStorageBucketAPI.create_bucket
  • storage.file_buckets.create_file_bucket → expected symbol: SyncStorageBucketAPI.create_bucket
  • storage.file_buckets.get_bucket → expected symbol: AsyncStorageBucketAPI.get_bucket
  • storage.file_buckets.get_bucket → expected symbol: SyncStorageBucketAPI.get_bucket
  • storage.file_buckets.list_file_buckets → expected symbol: AsyncStorageBucketAPI.list_buckets
  • storage.file_buckets.list_file_buckets → expected symbol: SyncStorageBucketAPI.list_buckets
  • storage.file_buckets.update_bucket → expected symbol: AsyncStorageBucketAPI.update_bucket
  • storage.file_buckets.update_bucket → expected symbol: SyncStorageBucketAPI.update_bucket
  • storage.file_buckets.delete_file_bucket → expected symbol: AsyncStorageBucketAPI.delete_bucket
  • storage.file_buckets.delete_file_bucket → expected symbol: SyncStorageBucketAPI.delete_bucket
  • storage.file_buckets.empty_bucket → expected symbol: AsyncStorageBucketAPI.empty_bucket
  • storage.file_buckets.empty_bucket → expected symbol: SyncStorageBucketAPI.empty_bucket
  • storage.file_buckets.upload → expected symbol: AsyncBucketActionsMixin.upload
  • storage.file_buckets.upload → expected symbol: SyncBucketActionsMixin.upload
  • storage.file_buckets.download → expected symbol: AsyncBucketActionsMixin.download
  • storage.file_buckets.download → expected symbol: SyncBucketActionsMixin.download
  • storage.file_buckets.list_files → expected symbol: AsyncBucketActionsMixin.list
  • storage.file_buckets.list_files → expected symbol: SyncBucketActionsMixin.list
  • storage.file_buckets.list_files → expected symbol: AsyncBucketActionsMixin.list_v2
  • storage.file_buckets.list_files → expected symbol: SyncBucketActionsMixin.list_v2
  • storage.file_buckets.move → expected symbol: AsyncBucketActionsMixin.move
  • storage.file_buckets.move → expected symbol: SyncBucketActionsMixin.move
  • storage.file_buckets.copy → expected symbol: AsyncBucketActionsMixin.copy
  • storage.file_buckets.copy → expected symbol: SyncBucketActionsMixin.copy
  • storage.file_buckets.remove → expected symbol: AsyncBucketActionsMixin.remove
  • storage.file_buckets.remove → expected symbol: SyncBucketActionsMixin.remove
  • storage.file_buckets.get_public_url → expected symbol: AsyncBucketActionsMixin.get_public_url
  • storage.file_buckets.get_public_url → expected symbol: SyncBucketActionsMixin.get_public_url
  • storage.file_buckets.create_signed_url → expected symbol: AsyncBucketActionsMixin.create_signed_url
  • storage.file_buckets.create_signed_url → expected symbol: SyncBucketActionsMixin.create_signed_url
  • storage.file_buckets.create_signed_urls → expected symbol: AsyncBucketActionsMixin.create_signed_urls
  • storage.file_buckets.create_signed_urls → expected symbol: SyncBucketActionsMixin.create_signed_urls
  • storage.file_buckets.create_signed_upload_url → expected symbol: AsyncBucketActionsMixin.create_signed_upload_url
  • storage.file_buckets.create_signed_upload_url → expected symbol: SyncBucketActionsMixin.create_signed_upload_url
  • storage.file_buckets.upload_with_signed_url → expected symbol: AsyncBucketActionsMixin.upload_to_signed_url
  • storage.file_buckets.upload_with_signed_url → expected symbol: SyncBucketActionsMixin.upload_to_signed_url
  • storage.file_buckets.update_file → expected symbol: AsyncBucketActionsMixin.update
  • storage.file_buckets.update_file → expected symbol: SyncBucketActionsMixin.update
  • storage.file_buckets.file_exists → expected symbol: AsyncBucketActionsMixin.exists
  • storage.file_buckets.file_exists → expected symbol: SyncBucketActionsMixin.exists
  • storage.file_buckets.file_info → expected symbol: AsyncBucketActionsMixin.info
  • storage.file_buckets.file_info → expected symbol: SyncBucketActionsMixin.info
  • storage.file_buckets.download_with_transform → expected symbol: AsyncBucketActionsMixin.create_signed_url
  • storage.file_buckets.download_with_transform → expected symbol: SyncBucketActionsMixin.create_signed_url
  • storage.file_buckets.upload_with_metadata → expected symbol: AsyncBucketActionsMixin.upload
  • storage.file_buckets.upload_with_metadata → expected symbol: SyncBucketActionsMixin.upload
  • storage.file_buckets.url_cache_nonce → expected symbol: AsyncBucketActionsMixin.download
  • storage.file_buckets.url_cache_nonce → expected symbol: SyncBucketActionsMixin.download
  • storage.vector_buckets.create_vector_bucket → expected symbol: AsyncStorageVectorsClient.create_bucket
  • storage.vector_buckets.create_vector_bucket → expected symbol: SyncStorageVectorsClient.create_bucket
  • storage.vector_buckets.list_vector_buckets → expected symbol: AsyncStorageVectorsClient.list_buckets
  • storage.vector_buckets.list_vector_buckets → expected symbol: SyncStorageVectorsClient.list_buckets
  • storage.vector_buckets.delete_vector_bucket → expected symbol: AsyncStorageVectorsClient.delete_bucket
  • storage.vector_buckets.delete_vector_bucket → expected symbol: SyncStorageVectorsClient.delete_bucket
  • storage.vector_buckets.access_vector_index → expected symbol: AsyncStorageClient.vectors
  • storage.vector_buckets.access_vector_index → expected symbol: AsyncStorageVectorsClient.from_
  • storage.vector_buckets.access_vector_index → expected symbol: AsyncVectorBucketScope.index
  • storage.vector_buckets.access_vector_index → expected symbol: SyncStorageClient.vectors
  • storage.vector_buckets.access_vector_index → expected symbol: SyncStorageVectorsClient.from_
  • storage.vector_buckets.access_vector_index → expected symbol: SyncVectorBucketScope.index
  • storage.vector_buckets.create_index → expected symbol: AsyncVectorBucketScope.create_index
  • storage.vector_buckets.create_index → expected symbol: SyncVectorBucketScope.create_index
  • storage.vector_buckets.delete_index → expected symbol: AsyncVectorBucketScope.delete_index
  • storage.vector_buckets.delete_index → expected symbol: SyncVectorBucketScope.delete_index
  • storage.vector_buckets.get_index → expected symbol: AsyncVectorBucketScope.get_index
  • storage.vector_buckets.get_index → expected symbol: SyncVectorBucketScope.get_index
  • storage.vector_buckets.list_indexes → expected symbol: AsyncVectorBucketScope.list_indexes
  • storage.vector_buckets.list_indexes → expected symbol: SyncVectorBucketScope.list_indexes
  • storage.vector_buckets.put_vectors → expected symbol: AsyncVectorIndexScope.put
  • storage.vector_buckets.put_vectors → expected symbol: SyncVectorIndexScope.put
  • storage.vector_buckets.get_vectors → expected symbol: AsyncVectorIndexScope.get
  • storage.vector_buckets.get_vectors → expected symbol: SyncVectorIndexScope.get
  • storage.vector_buckets.delete_vectors → expected symbol: AsyncVectorIndexScope.delete
  • storage.vector_buckets.delete_vectors → expected symbol: SyncVectorIndexScope.delete
  • storage.vector_buckets.list_vectors → expected symbol: AsyncVectorIndexScope.list
  • storage.vector_buckets.list_vectors → expected symbol: SyncVectorIndexScope.list
  • storage.vector_buckets.query_vectors → expected symbol: AsyncVectorIndexScope.query
  • storage.vector_buckets.query_vectors → expected symbol: SyncVectorIndexScope.query
  • storage.vector_buckets.parallel_scan → expected symbol: AsyncVectorIndexScope.list
  • storage.vector_buckets.parallel_scan → expected symbol: SyncVectorIndexScope.list
  • storage.analytics.create_analytics_bucket → expected symbol: AsyncStorageAnalyticsClient.create
  • storage.analytics.create_analytics_bucket → expected symbol: SyncStorageAnalyticsClient.create
  • storage.analytics.list_analytics_buckets → expected symbol: AsyncStorageAnalyticsClient.list
  • storage.analytics.list_analytics_buckets → expected symbol: SyncStorageAnalyticsClient.list
  • storage.analytics.delete_analytics_bucket → expected symbol: AsyncStorageAnalyticsClient.delete
  • storage.analytics.delete_analytics_bucket → expected symbol: SyncStorageAnalyticsClient.delete
  • storage.analytics.access_catalog → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.access_catalog → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.create_namespace → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.create_namespace → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.list_namespaces → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.list_namespaces → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.delete_namespace → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.delete_namespace → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.load_namespace_metadata → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.load_namespace_metadata → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.namespace_exists → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.namespace_exists → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.update_namespace_properties → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.update_namespace_properties → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.create_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.create_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.list_tables → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.list_tables → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.load_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.load_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.update_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.update_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.rename_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.rename_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.delete_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.delete_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.register_table → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.register_table → expected symbol: SyncStorageAnalyticsClient.catalog
  • storage.analytics.table_exists → expected symbol: AsyncStorageAnalyticsClient.catalog
  • storage.analytics.table_exists → expected symbol: SyncStorageAnalyticsClient.catalog

The following capabilities are marked implemented in python but have no registered symbols to verify:

  • auth.session.auto_refresh (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.cross_client_token_sync (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.oauth_flow_type (no symbols list — cannot confirm implementation exists)
  • client.session_management.custom_storage (no symbols list — cannot confirm implementation exists)
  • client.session_management.persist_session (no symbols list — cannot confirm implementation exists)
  • client.request_configuration.custom_http_client (no symbols list — cannot confirm implementation exists)
  • client.request_configuration.global_headers (no symbols list — cannot confirm implementation exists)
  • database.mutate.select_after_mutation (no symbols list — cannot confirm implementation exists)
  • database.mutate.bulk_rows_with_differing_fields (no symbols list — cannot confirm implementation exists)
  • database.mutate.count (no symbols list — cannot confirm implementation exists)
  • database.mutate.missing_defaults (no symbols list — cannot confirm implementation exists)
  • database.using_filters.eq (no symbols list — cannot confirm implementation exists)
  • database.using_filters.neq (no symbols list — cannot confirm implementation exists)
  • database.using_filters.gt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.gte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.lt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.lte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.like (no symbols list — cannot confirm implementation exists)
  • database.using_filters.ilike (no symbols list — cannot confirm implementation exists)
  • database.using_filters.is (no symbols list — cannot confirm implementation exists)
  • database.using_filters.in (no symbols list — cannot confirm implementation exists)
  • database.using_filters.contains (no symbols list — cannot confirm implementation exists)
  • database.using_filters.contained_by (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_gt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_gte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_lt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_lte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_adjacent (no symbols list — cannot confirm implementation exists)
  • database.using_filters.overlaps (no symbols list — cannot confirm implementation exists)
  • database.using_filters.text_search (no symbols list — cannot confirm implementation exists)
  • database.using_filters.match (no symbols list — cannot confirm implementation exists)
  • database.using_filters.not (no symbols list — cannot confirm implementation exists)
  • database.using_filters.or (no symbols list — cannot confirm implementation exists)
  • database.using_filters.raw (no symbols list — cannot confirm implementation exists)
  • database.using_filters.regex (no symbols list — cannot confirm implementation exists)
  • database.using_filters.regex_icase (no symbols list — cannot confirm implementation exists)
  • database.using_filters.not_in (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.order (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.limit (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.range (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.request_cancellation (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.relationship_embed (no symbols list — cannot confirm implementation exists)
  • database.configuration.request_timeout (no symbols list — cannot confirm implementation exists)
  • functions.invocation.method_override (no symbols list — cannot confirm implementation exists)
  • functions.invocation.region_selection (no symbols list — cannot confirm implementation exists)
  • functions.invocation.request_cancellation (no symbols list — cannot confirm implementation exists)
  • functions.invocation.timeout (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.postgres_changes_filter (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.private_channel (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.broadcast_self (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.broadcast_replay (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.postgres_changes_multiple_filters (no symbols list — cannot confirm implementation exists)
  • realtime.presence.presence_key (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.heartbeat_interval (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.access_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.request_cancellation (no symbols list — cannot confirm implementation exists)

These may have been renamed, removed, or never registered. Please update the capability matrix.
See: https://github.com/supabase/sdk/blob/main/packages/capability-matrix/docs/capability-matrix.md

@spydon
spydon added this pull request to stack #1799 October 20, 2026 15:08
Comment thread src/functions/src/supabase_functions/errors.py Outdated
Comment thread src/functions/src/supabase_functions/errors.py Outdated
Comment thread src/functions/src/supabase_functions/client.py Outdated
Comment thread src/functions/src/supabase_functions/client.py
Comment thread src/functions/src/supabase_functions/client.py Outdated
Comment thread src/functions/src/supabase_functions/client.py Outdated
Comment thread src/functions/src/supabase_functions/errors.py Outdated
Comment thread src/functions/src/supabase_functions/errors.py Outdated
Comment thread src/functions/src/supabase_functions/client.py
@spydon
spydon force-pushed the v3-sync/04-functions branch from ff5d594 to efecdf7 Compare October 21, 2026 07:13
grdsdev and others added 8 commits October 21, 2026 09:40
…#1638)

Co-authored-by: Leonardo Santiago <leonardo.ribeiro.santiago@gmail.com>
(cherry picked from commit f294058)
… calls (#1536)

v3 already builds per-call headers from immutable Headers, so only the tests are ported.

Co-authored-by: Leonardo Santiago <leonardo.ribeiro.santiago@gmail.com>
(cherry picked from commit 655d4c2)
…1747)

v3 already uses case-insensitive Headers for client and per-call headers, so only the tests are ported.

(cherry picked from commit 2de8af0)
Body requests appended a second Content-Type value when the caller already set one, and Response.is_success accepted status 300.
invoke() now uses the shared supabase_utils request types, sends lists as JSON, raises TypeError for unsupported bodies, and documents its parameters. Error messages fall back to the message key and then the raw body, and structured errors are rendered as JSON.
…ient Content-Type

Body requests now keep a Content-Type only when the request itself sets one, so a client-wide Content-Type no longer mislabels JSON bodies in auth, postgrest and storage. Functions still applies a client-level Content-Type, as on main. invoke() accepts a region string, as on main, and region overrides an x-region header instead of appending to it.
@spydon
spydon force-pushed the v3-sync/04-functions branch from efecdf7 to 16a9a94 Compare October 21, 2026 07:46

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants