Changelog
=========

Version 2.2
-----------

Released on February 27, 2017, codename Dubnium

- Minimum SQLAlchemy version is 0.8 due to use of ``sqlalchemy.inspect``.
- Added support for custom ``query_class`` and ``model_class`` as args
  to the ``SQLAlchemy`` constructor. (`#328`_)
- Allow listening to SQLAlchemy events on ``db.session``. (`#364`_)
- Allow ``__bind_key__`` on abstract models. (`#373`_)
- Allow ``SQLALCHEMY_ECHO`` to be a string. (`#409`_)
- Warn when ``SQLALCHEMY_DATABASE_URI`` is not set. (`#443`_)
- Don't let pagination generate invalid page numbers. (`#460`_)
- Drop support of Flask < 0.10. This means the db session is always tied to
  the app context and its teardown event. (`#461`_)
- Tablename generation logic no longer accesses class properties unless they
  are ``declared_attr``. (`#467`_)

.. _#328: https://github.com/mitsuhiko/flask-sqlalchemy/pull/328
.. _#364: https://github.com/mitsuhiko/flask-sqlalchemy/pull/364
.. _#373: https://github.com/mitsuhiko/flask-sqlalchemy/pull/373
.. _#409: https://github.com/mitsuhiko/flask-sqlalchemy/pull/409
.. _#443: https://github.com/mitsuhiko/flask-sqlalchemy/pull/443
.. _#460: https://github.com/mitsuhiko/flask-sqlalchemy/pull/460
.. _#461: https://github.com/mitsuhiko/flask-sqlalchemy/pull/461
.. _#467: https://github.com/mitsuhiko/flask-sqlalchemy/pull/467

Version 2.1
-----------

Released on October 23rd 2015, codename Caesium

- Table names are automatically generated in more cases, including
  subclassing mixins and abstract models.
- Allow using a custom MetaData object.
- Add support for binds parameter to session.

Version 2.0
-----------

Released on August 29th 2014, codename Bohrium

- Changed how the builtin signals are subscribed to skip non Flask-SQLAlchemy
  sessions.  This will also fix the attribute error about model changes
  not existing.
- Added a way to control how signals for model modifications are tracked.
- Made the ``SignallingSession`` a public interface and added a hook
  for customizing session creation.
- If the ``bind`` parameter is given to the signalling session it will no
  longer cause an error that a parameter is given twice.
- Added working table reflection support.
- Enabled autoflush by default.
- Consider ``SQLALCHEMY_COMMIT_ON_TEARDOWN`` harmful and remove from docs.

Version 1.0
-----------

Released on July 20th 2013, codename Aurum

- Added Python 3.3 support.
- Dropped 2.5 compatibility.
- Various bugfixes
- Changed versioning format to do major releases for each update now.

Version 0.16
------------

- New distribution format (flask_sqlalchemy)
- Added support for Flask 0.9 specifics.

Version 0.15
------------

- Added session support for multiple databases

Version 0.14
------------

- Make relative sqlite paths relative to the application root.

Version 0.13
------------

- Fixed an issue with Flask-SQLAlchemy not selecting the correct binds.

Version 0.12
------------
- Added support for multiple databases.
- Expose Flask-SQLAlchemy's BaseQuery as `db.Query`.
- Set default query_class for `db.relation`, `db.relationship`, and
  `db.dynamic_loader` to Flask-SQLAlchemy's BaseQuery.
- Improved compatibility with Flask 0.7.

Version 0.11
------------

- Fixed a bug introduced in 0.10 with alternative table constructors.

Version 0.10
------------

- Added support for signals.
- Table names are now automatically set from the class name unless
  overriden.
- Model.query now always works for applications directly passed to
  the SQLAlchemy constructor.  Furthermore the property now raises
  an RuntimeError instead of being None.
- added session options to constructor.
- fixed a broken `__repr__`
- `db.Table` is now a factor function that creates table objects.
  This makes it possible to omit the metadata.

Version 0.9
-----------

- applied changes to pass the Flask extension approval process.

Version 0.8
-----------

- added a few configuration keys for creating connections.
- automatically activate connection recycling for MySQL connections.
- added support for the Flask testing mode.

Version 0.7
-----------

- Initial public release
