TL;DR: BlockBlobService was the v2-track client and v12 deleted it. Either migrate to BlobServiceClient (recommended) or pin azure-storage-blob<3 to keep the old API.

```text
ImportError: cannot import name 'BlockBlobService' from 'azure.storage.blob'
```

## Fix it

1. Decide: migrate or pin. Migrating is better for anything you will maintain.
2. To migrate: pip install -U azure-storage-blob, then replace BlockBlobService(connection_string=...) usage with BlobServiceClient.from_connection_string(...), and method calls per the v12 migration guide. Expected: imports succeed.
3. To pin (short-term only): pip install "azure-storage-blob<3". Expected: BlockBlobService imports again.
4. Record the choice in requirements so the next fresh install is deterministic.

## When this applies
- The code imports BlockBlobService and pip shows azure-storage-blob 12.x.

## When it doesn't
- pip shows 2.x and the import still fails: namespace conflict; see the azure.identity namespace skill.
- You are writing new code: use BlobServiceClient from the start.

## Compatibility
- v12: azure-storage-blob >= 12.0. Legacy: azure-storage-blob 2.x.

## Why it happens
Major-version SDK rewrites drop old classes. v12 kept the package name but replaced the entire surface, so old imports fail loudly instead of subtly.

## Edge cases
- Some third-party libraries still import BlockBlobService internally; pinning may be forced until they migrate.
- Connection strings from the portal work with both tracks, so auth config does not need to change.
