|
Accept Any Fetcher You Can Await
|
Medium
|
Primitives
|
|
|
Accept Read-Only Inputs and Return Concrete Results
|
Medium
|
Primitives
|
|
|
Bring Thread Errors Back to the Caller
|
Medium
|
Primitives
|
|
|
Build a Blocking Queue with a Condition
|
Medium
|
Primitives
|
|
|
Build a Generic Result Class
|
Medium
|
Primitives
|
|
|
Build a Generic Result Type with Ok and Err
|
Hard
|
Framework
|
|
|
Build a Thread-Safe Cache with One Lock per Key
|
Hard
|
Research
|
|
|
Capstone: Build an Async Worker Pool with Retries and Clean Shutdown
|
Hard
|
End-to-End
|
|
|
Diff Two Dataclass Records Field by Field
|
Hard
|
Framework
|
|
|
Fetch Many Pages with a TaskGroup
|
Medium
|
Primitives
|
|
|
Fix the Variance of a Serializer and a Parser
|
Hard
|
Primitives
|
|
|
Keep the Type at Each Tuple Position with TypeVarTuple
|
Hard
|
Primitives
|
|
|
Limit a Type Parameter with Bounds and Constraints
|
Hard
|
Framework
|
|
|
Partition and Chunk a List with Generic Helpers
|
Medium
|
Primitives
|
|
|
Placement 1/6: Make a Generic Class Read-Only
|
Medium
|
Primitives
|
|
|
Remove Duplicates in Order and Keep the Latest Items
|
Easy
|
Primitives
|
|
|
Restrict One Method to String Builders with Self Types
|
Medium
|
Framework
|
|
|
Return Errors as Values with a Result Type
|
Hard
|
Primitives
|
|
|
Run Async Cleanup Without Hiding the Real Error
|
Hard
|
Primitives
|
|
|
Run Code in a Subinterpreter and Check the Result
|
Medium
|
Research
|
|
|
Translate Library Errors into Your Own
|
Medium
|
Primitives
|
|
|
Type a Lookup with a Default Using Overloads
|
Hard
|
Primitives
|
|
|
Type-Check the Arguments You Send to a Worker
|
Medium
|
Primitives
|
|
|
Write a Pool Map That Reports Every Failure
|
Medium
|
Primitives
|
|
|
Write a Sync Wrapper for Async Code
|
Easy
|
Primitives
|
|