In this exercise, you need to implement an inventory management system using stacks. The goal is to simulate real-world inventory operations, where products are managed in batches, and the Last-In-First-Out (LIFO) principle is applied. This approach mirrors scenarios where the most recently added inventory is used first, such as when dealing with durable goods.

Inventory

Implement the Inventory_Manager class (11 points)

Create the Inventory_Manager class (1 point) that manages the inventory for multiple products. Each object contains a dictionary of products where the product_name is used as key.

This class should have the following methods:

Product [product_name] already exists.
Product [product_name] not found
[product_name],[batch_quantity],[batch_cost_per_unit]
Current Inventory:
Product Widget:
 Batch(quantity=100, cost_per_unit=2.5)
 Batch(quantity=50, cost_per_unit=2.0)

Product Gadget:
 Batch(quantity=70, cost_per_unit=3.0)

Test your code (2 points)

Add a main method that adds two products and for every product min 2 batches. Next print your inventory, simulate demand and save your inventory to a csv file.