"TypeError: Argument of type 'Bucket' cannot be assigned to parameter of type 'Bucket' in b2sdk.v2"
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start with the v2 re-exports in the b2sdk/v2 package and the Bucket class it exposes, then compare them with the implementation under b2sdk/_internal. Check whether B2Api.get_bucket_by_name() returns the same class the public Bucket name points to, and reproduce the ls(latest_only=True) call. Done means the returned object passes the b2.Bucket annotation and ls() runs, or the import path that causes the mismatch is documented. Read the four comments first, since the maintainers may already have explained the cause.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
BucketusingB2Api.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)
- Ngôn ngữ chính
- Python
- Star
- 214
- Fork
- 68
- Merge trung bình
- 51 phút
- Pull request đã merge (30 ngày)
- 6
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Backblaze/b2-sdk-python
-
Download and copy sync actions print remote file names without escape_control_charsCó thể đã có người làm @dreyfus92 đã nhận 15 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Backblaze/b2-sdk-python#631 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
SqliteAccountInfo profile name validation uses "re.match", so only the first character is checkedCó thể đã có người làm @nazarli-shabnam đã nhận 9 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Backblaze/b2-sdk-python#629 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Adopt the AI-native SDLC and repository policiesCó thể đã có người làm @goanpeca đã nhận 18 ngày trước. Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
Backblaze/b2-sdk-python#634 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 50/100
Backblaze/b2-sdk-python#630 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ci: cli-compat fails — 4 sse/sync integration tests broken in B2_Command_Line_Tool (all environments)Có thể làm lại được @ffumero2003 đã nhận 37 ngày trước và không có pull request nào đang mở. Đang mởbug testing
Backblaze/b2-sdk-python#627 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Backblaze/b2-sdk-python
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
btclib-org/btclib-node#2505 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
open-webui/open-webui#34462 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
gorakhargosh/watchdog#1462 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
openwisp/openwisp-monitoring#889 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
IETF-Hackathon/pqc-certificates#351 ·
Maintainer thường phản hồi trong vòng 2 ngày