# Release notes for cobrapy 0.8.2

## Fixes

- Guarantee that sampler._reproject always returns a feasible point
  and will not attempt to reproject already feasible
  points. [#564](https://github.com/opencobra/cobrapy/pull/564)
- `Model.summary` no longer fails when calling after the model has
  changed. Fixed by letting the summary function re-compute a solution
  (default) or letting user supply a prior computed solution
  object. [#566](https://github.com/opencobra/cobrapy/pull/566)
- Metabolites must now have valid identifiers before being added to a
  model or `ValueError` is raised.
- Fix use of underscores in key/value pairs in legacy sbml
  notes. [#547](https://github.com/opencobra/cobrapy/issues/547)

## Backwards incompatible changes

- the Solution class no longer contains links progenitor model's
  reactions and metabolites. Removed since it those can change after
  the solution has been computed making them erroneous. This of course
  implies that `Solution` constructor changes to:
  ```
      def __init__(self, objective_value, status, fluxes, reduced_costs=None,
                 shadow_prices=None, **kwargs):
  ```
