These tasks model a small warehouse: items, a shelf that holds them, stock movements and low-stock alerts.
Decide for each one whether you need a plain class (behavior and changing state), a dataclass (a record), or a subclass (a variation of something that exists). The checker builds your objects and calls their methods, including on edge cases like an empty shelf.
Special methods such as __len__ and __contains__ make your objects work with len() and in, just like built-in containers.