To solve this optimization problem, we first need to define the decision variables, objective function, and constraints. Let's denote:

- \(x\) as the number of apple pies made.
- \(y\) as the number of blueberry pies made.

The objective is to maximize profit. Given that each apple pie generates $5 in profit and each blueberry pie generates $6 in profit, our objective function can be represented as:

\[ \text{Maximize: } 5x + 6y \]

We have two main constraints based on the problem description:

1. **Time Constraint**: It takes 30 minutes to make an apple pie and 40 minutes to make a blueberry pie, with a total of 4500 minutes available per week.
   - This can be represented as: \(30x + 40y \leq 4500\)

2. **Fruit Availability Constraints**:
   - For apple pies: \(x \leq 70\)
   - For blueberry pies: \(y \leq 60\)

Additionally, we have non-negativity constraints since the number of pies cannot be negative:

- \(x \geq 0\)
- \(y \geq 0\)

Now, let's translate this into Gurobi code in Python. We will use the Gurobi Python interface to model and solve this linear programming problem.

```python
from gurobipy import *

# Create a new model
m = Model("Pie_Making_Problem")

# Define variables
x = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="apple_pies")
y = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="blueberry_pies")

# Set the objective function
m.setObjective(5*x + 6*y, GRB.MAXIMIZE)

# Add constraints
m.addConstr(30*x + 40*y <= 4500, "time_constraint")
m.addConstr(x <= 70, "apple_pie_limit")
m.addConstr(y <= 60, "blueberry_pie_limit")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: {x.varName} = {x.x}, {y.varName} = {y.x}")
    print(f"Maximum profit: ${5*x.x + 6*y.x:.2f}")
else:
    print("No optimal solution found")
```