bucket.delete(force=True) does not work if versioning is enabled

Environment details

  • OS type and version: Alpine Linux
  • Python version: python --version: Python 3.11.4
  • pip version: pip --version: pip 23.1.2 from /opt/venv-azcli/lib/python3.11/site-packages/pip (python 3.11)
  • google-cloud-storage version: pip show google-cloud-storage: 2.10.0

Steps to reproduce

Create a versioned bucket
Add some data
Exclude bucket forcefully.

While it would be expected that all blobs are deleted and the bucket excluded, it returns 409.

Code example

storage_client = storage.Client(credentials=mycredentials,project=myproject)
bucket_name = 'sa-bk3-hec42-cis-tmp'
bucket = storage_client.create_bucket(bucket_name, location="EUROPE-WEST4")
bucket.versioning_enabled = True
bucket.patch()

blob = storage.Blob(name=f"wrapper/test", bucket=bucket)
blob.upload_from_string(data='decomission', content_type="text/plain")

bucket = storage_client.get_bucket(bucket_name)
bucket.delete(force=True)

Stack trace

(<class 'google.api_core.exceptions.Conflict'>, Conflict('DELETE https://storage.googleapis.com/storage/v1/b/sa-bk3-hec42-cis-tmp?prettyPrint=false: The bucket you tried to delete is not empty.'), <traceback object at 0x102c416c0>)

Expected Result

According to the documentation, If force=True is passed, this will first attempt to delete all the objects / blobs in the bucket (i.e. try to empty the bucket).
Besides, 409 should indicates that the bucket name is not available. This error number seems to be misleading.