-
Notifications
You must be signed in to change notification settings - Fork 62
Description
Issue Description
When attempting to use the ls()
method on a Bucket
object obtained from b2sdk.v2.B2Api.get_bucket_by_name()
, I encountered a TypeError stating that the Bucket
argument type is incompatible with the expected 'Bucket' parameter type. It appears that get_bucket_by_name()
may be returning an internal SDK type not intended for direct use, despite being accessed through the public API.
Steps to Reproduce
- Setup a basic environment with b2sdk.v2 configured with valid Backblaze B2 credentials.
- Fetch a
Bucket
usingB2Api.get_bucket_by_name()
. - Attempt to list directories or files using the
Bucket.ls()
method. - Observe the TypeError related to incompatible type assignment.
Expected Behavior
The Bucket
object returned from get_bucket_by_name()
should be fully compatible with other methods expecting a Bucket
type as defined in the b2sdk.v2
public API.
Actual Behavior
A TypeError is raised suggesting type incompatibility, indicating possible exposure of internal types in what should be a public API method.
Environment
- Python version: 3.12
- b2sdk version: 2.1
Additional Context
This issue seems to stem from recent changes in the SDK where non-api packages were moved to b2sdk._internal
as noted in the changelog for version 2.0.0. It would be helpful to confirm whether get_bucket_by_name()
should return a type from b2sdk.v2
or if there's a recommended workaround for this type mismatch.
import b2sdk.v2 as b2
def get_bucket():
info = b2.InMemoryAccountInfo()
b2_api = b2.B2Api(info)
b2_api.authorize_account("production", settings.BACKBLAZE_KEY_ID, settings.BACKBLAZE_APPLICATION_KEY)
return b2_api.get_bucket_by_name(settings.BACKBLAZE_BUCKET_NAME)
def list_directories(bucket: b2.Bucket):
try:
for file_version, folder_name in bucket.ls(latest_only=True):
print(folder_name)
except TypeError as e:
print(f"TypeError: {str(e)}")
# Example
bucket = get_bucket()
list_directories(bucket)