Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #159

Closed
wants to merge 43 commits into from
Closed

Initial Update #159

wants to merge 43 commits into from

Conversation

pyup-bot
Copy link

This is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

Flask 0.10.1 » 0.12.2 PyPI | Changelog | Repo
Flask-Admin 1.3.0 » 1.5.0 PyPI | Changelog | Repo | Docs
Flask-Bootstrap 3.3.5.6 » 3.3.7.1 PyPI | Changelog | Repo | Docs
Flask-DebugToolbar 0.10.0 » 0.10.1 PyPI | Docs
Flask-Login 0.2.11 » 0.4.0 PyPI | Changelog | Repo | Docs
Flask-Migrate 1.5.0 » 2.0.4 PyPI | Changelog | Repo | Docs
Flask-Security 1.7.4 » 3.0.0 PyPI | Changelog | Repo | Docs
Flask-SQLAlchemy 2.0 » 2.2 PyPI | Changelog | Repo | Docs
Flask-WTF 0.12 » 0.14.2 PyPI | Changelog | Repo | Docs
alembic 0.8.1 » 0.9.2 PyPI | Changelog | Repo | Docs
GeoAlchemy2 0.2.5 » 0.4.0 PyPI | Changelog | Homepage
SQLAlchemy 1.0.8 » 1.1.10 PyPI | Changelog | Homepage
psycopg2 2.6.1 » 2.7.1 PyPI | Changelog | Homepage | Docs
celery 3.1.18 » 4.0.2 PyPI | Changelog | Homepage | Docs
redis 2.10.3 » 2.10.5 PyPI | Changelog | Repo
arrow 0.6.0 » 0.10.0 PyPI | Changelog | Repo
beautifulsoup4 4.4.0 » 4.6.0 PyPI | Changelog | Homepage
ipaddress 1.0.14 » 1.0.18 PyPI | Repo
Jinja2 2.8 » 2.9.6 PyPI | Changelog | Homepage
Mako 1.0.1 » 1.0.6 PyPI | Changelog | Homepage
MarkupSafe 0.23 » 1.0 PyPI | Changelog | Repo
passlib 1.6.5 » 1.7.1 PyPI | Repo | Docs
parsedatetime 1.5 » 2.4 PyPI | Changelog | Repo
pillow 2.9.0 » 4.1.1 PyPI | Changelog | Homepage
pyparsing 2.0.3 » 2.2.0 PyPI | Changelog | Homepage | Docs
python-dateutil 2.4.2 » 2.6.0 PyPI | Changelog | Docs
pytz 2015.4 » 2017.2 PyPI | Homepage | Docs
PyYAML 3.11 » 3.12 PyPI | Changelog | Homepage
requests 2.7.0 » 2.18.1 PyPI | Changelog | Homepage
Shapely 1.5.11 » 1.5.17.post1 PyPI | Changelog | Repo
raven 5.5.0 » 6.1.0 PyPI | Changelog | Repo
six 1.9.0 » 1.10.0 PyPI | Changelog | Homepage | Docs
Werkzeug 0.10.4 » 0.12.2 PyPI | Changelog | Homepage
WTForms 2.0.2 » 2.1 PyPI | Changelog | Homepage | Docs
matplotlib 1.4.3 » 2.0.2 PyPI | Changelog | Homepage
seaborn 0.6.0 » 0.7.1 PyPI | Changelog | Repo
coverage 3.7.1 » 4.4.1 PyPI | Changelog | Docs
coveralls 0.5 » 1.1 PyPI | Changelog | Repo
Flask-Testing 0.4.2 » 0.6.2 PyPI | Changelog | Repo | Docs
mock 1.3.0 » 2.0.0 PyPI | Repo
pytest 2.7.2 » 3.1.2 PyPI | Changelog | Repo | Homepage
vcrpy 1.7.2 » 1.11.1 PyPI | Changelog | Repo
codecov 2.0.9 » 2.0.9 PyPI | Changelog | Repo

Changelogs

Flask 0.10.1 -> 0.12.2

0.12.2


Released on May 16 2017

  • Fix a bug in safe_join on Windows.

0.12.1


Bugfix release, released on March 31st 2017

  • Prevent flask run from showing a NoAppException when an ImportError occurs
    within the imported application module.
  • Fix encoding behavior of app.config.from_pyfile for Python 3. Fix
    2118.
  • Use the SERVER_NAME config if it is present as default values for
    app.run. 2109, 2152
  • Call ctx.auto_pop with the exception object instead of None, in the
    event that a BaseException such as KeyboardInterrupt is raised in a
    request handler.

0.12


Released on December 21st 2016, codename Punsch.

  • the cli command now responds to --version.
  • Mimetype guessing and ETag generation for file-like objects in send_file
    has been removed, as per issue 104. See pull request 1849.
  • Mimetype guessing in send_file now fails loudly and doesn't fall back to
    application/octet-stream. See pull request 1988.
  • Make flask.safe_join able to join multiple paths like os.path.join
    (pull request 1730).
  • Revert a behavior change that made the dev server crash instead of returning
    a Internal Server Error (pull request 2006).
  • Correctly invoke response handlers for both regular request dispatching as
    well as error handlers.
  • Disable logger propagation by default for the app logger.
  • Add support for range requests in send_file.
  • app.test_client includes preset default environment, which can now be
    directly set, instead of per client.get.

0.11.2


Bugfix release, unreleased

  • Fix crash when running under PyPy3, see pull request 1814.

0.11.1


Bugfix release, released on June 7th 2016.

  • Fixed a bug that prevented FLASK_APP=foobar/__init__.py from working. See
    pull request 1872.

0.11


Released on May 29th 2016, codename Absinthe.

  • Added support to serializing top-level arrays to :func:flask.jsonify. This
    introduces a security risk in ancient browsers. See
    :ref:json-security for details.
  • Added before_render_template signal.
  • Added **kwargs to :meth:flask.Test.test_client to support passing
    additional keyword arguments to the constructor of
    :attr:flask.Flask.test_client_class.
  • Added SESSION_REFRESH_EACH_REQUEST config key that controls the
    set-cookie behavior. If set to True a permanent session will be
    refreshed each request and get their lifetime extended, if set to
    False it will only be modified if the session actually modifies.
    Non permanent sessions are not affected by this and will always
    expire if the browser window closes.
  • Made Flask support custom JSON mimetypes for incoming data.
  • Added support for returning tuples in the form (response, headers)
    from a view function.
  • Added :meth:flask.Config.from_json.
  • Added :attr:flask.Flask.config_class.
  • Added :meth:flask.Config.get_namespace.
  • Templates are no longer automatically reloaded outside of debug mode. This
    can be configured with the new TEMPLATES_AUTO_RELOAD config key.
  • Added a workaround for a limitation in Python 3.3's namespace loader.
  • Added support for explicit root paths when using Python 3.3's namespace
    packages.
  • Added :command:flask and the flask.cli module to start the local
    debug server through the click CLI system. This is recommended over the old
    flask.run() method as it works faster and more reliable due to a
    different design and also replaces Flask-Script.
  • Error handlers that match specific classes are now checked first,
    thereby allowing catching exceptions that are subclasses of HTTP
    exceptions (in werkzeug.exceptions). This makes it possible
    for an extension author to create exceptions that will by default
    result in the HTTP error of their choosing, but may be caught with
    a custom error handler if desired.
  • Added :meth:flask.Config.from_mapping.
  • Flask will now log by default even if debug is disabled. The log format is
    now hardcoded but the default log handling can be disabled through the
    LOGGER_HANDLER_POLICY configuration key.
  • Removed deprecated module functionality.
  • Added the EXPLAIN_TEMPLATE_LOADING config flag which when enabled will
    instruct Flask to explain how it locates templates. This should help
    users debug when the wrong templates are loaded.
  • Enforce blueprint handling in the order they were registered for template
    loading.
  • Ported test suite to py.test.
  • Deprecated request.json in favour of request.get_json().
  • Add "pretty" and "compressed" separators definitions in jsonify() method.
    Reduces JSON response size when JSONIFY_PRETTYPRINT_REGULAR=False by removing
    unnecessary white space included by default after separators.
  • JSON responses are now terminated with a newline character, because it is a
    convention that UNIX text files end with a newline and some clients don't
    deal well when this newline is missing. See
    Add JSONIFY_END_WITH_NEWLINE config variable pallets/flask#1262 -- this came up originally as a
    part of https://github.com/kennethreitz/httpbin/issues/168
  • The automatically provided OPTIONS method is now correctly disabled if
    the user registered an overriding rule with the lowercase-version
    options (issue 1288).
  • flask.json.jsonify now supports the datetime.date type (pull request
    1326).
  • Don't leak exception info of already catched exceptions to context teardown
    handlers (pull request 1393).
  • Allow custom Jinja environment subclasses (pull request 1422).
  • flask.g now has pop() and setdefault methods.
  • Turn on autoescape for flask.templating.render_template_string by default
    (pull request 1515).
  • flask.ext is now deprecated (pull request 1484).
  • send_from_directory now raises BadRequest if the filename is invalid on
    the server OS (pull request 1763).
  • Added the JSONIFY_MIMETYPE configuration variable (pull request 1728).
  • Exceptions during teardown handling will no longer leave bad application
    contexts lingering around.

0.10.2


(bugfix release, release date to be announced)

  • Fixed broken test_appcontext_signals() test case.
  • Raise an :exc:AttributeError in :func:flask.helpers.find_package with a
    useful message explaining why it is raised when a PEP 302 import hook is used
    without an is_package() method.
  • Fixed an issue causing exceptions raised before entering a request or app
    context to be passed to teardown handlers.
  • Fixed an issue with query parameters getting removed from requests in
    the test client when absolute URLs were requested.
  • Made before_first_request into a decorator as intended.
  • Fixed an etags bug when sending a file streams with a name.
  • Fixed send_from_directory not expanding to the application root path
    correctly.
  • Changed logic of before first request handlers to flip the flag after
    invoking. This will allow some uses that are potentially dangerous but
    should probably be permitted.
  • Fixed Python 3 bug when a handler from app.url_build_error_handlers
    reraises the BuildError.

Flask-Admin 1.3.0 -> 1.5.0

1.5.0


  • Fixed CSRF generation logic for multi-process deployments
  • Added WTForms >= 3.0 support
  • Flask-Admin would not recursively save inline models, allowing arbitrary nesting
  • Added configuration properties that allow injection of additional CSS and JS dependencies into templates without overriding them
  • SQLAlchemy backend
  • Updated hybrid property detection using new SQLAlchemy APIs
  • Added support for association proxies
  • Added support for remote hybrid properties filters
  • Added support for ARRAY column type
  • Localization-related fixes
  • MongoEngine backend is now properly formats model labels
  • Improved Google App Engine support:
  • Added TextProperty, KeyProperty and SelectField support
  • Added support for form_args, excluded_columns, page_size and after_model_update
  • Fixed URL generation with localized named filters
  • FileAdmin has Bootstrap 2 support now
  • Geoalchemy fixes
  • Use Google Places (by default) for place search
  • Updated translations
  • Bug fixes

1.4.2


  • Small bug fix release. Fixes regression that prevented usage of "virtual" columns with a custom formatter.

1.4.1


  • Official Python 3.5 support
  • Customizable row actions
  • Tablib support (exporting to XLS, XLSX, CSV, etc)
  • Updated external dependencies (jQuery, x-editable, etc)
  • Added settings that allows exceptions to be raised on view errors
  • Bug fixes

1.4.0


  • Updated and reworked documentation
  • FileAdmin went through minor refactoring and now supports remote file systems. Comes with the new, optional, AWS S3 file management interface
  • Configurable CSV export for model views
  • Added overridable URL generation logic. Allows using custom URLs with parameters for administrative views
  • Added column_display_actions to ModelView control visibility of the action column without overriding the template
  • Added support for the latest MongoEngine
  • New SecureForm base class for easier CSRF validation
  • Lots of translation-related fixes and updated translations
  • Bug fixes

Flask-Bootstrap 3.3.5.6 -> 3.3.7.1

3.3.7.0


  • Most likely to be the last major Bootstrap 3 release (see
    Getting to v4 twbs/bootstrap#20631). Make sure you pin
    Flask-Bootstrap's version to <4 to avoid inadvertent updates.

3.3.5.7


  • IE-specific meta information and viewport meta tags have been added to the
    base template.
  • The flashed messages are no longer considered "safe", which means HTML-markup
    will be escaped. See :func:flashed_messages for more information.
  • The title block now contains an empty-by-default title variable.

Flask-Login 0.2.11 -> 0.4.0

0.4.0


Released on October 26th, 2016

  • Fixes OPTIONS exemption from login. 244
  • Fixes use of MD5 by replacing with SHA512. 264
  • BREAKING: The login_manager.token_handler function, get_auth_token method
    on the User class, and the utils.make_secure_token utility function have
    been removed to prevent users from creating insecure auth implementations.
    Use the Alternative Tokens example from the docs instead. 291

0.3.2


Released on October 8th, 2015

  • Fixes Python 2.6 compatibility.
  • Updates SESSION_KEYS to include "remember".

0.3.1


Released on September 30th, 2015

  • Fixes removal of non-Flask-Login keys from session object when using 'strong'
    protection.

0.3.0


Released on September 10th, 2015

  • Fixes handling of X-Forward-For header.
  • Update to use SHA512 instead of MD5 for session identifier creation.
  • Fixes session creation for every view.
  • BREAKING: UTC used to set cookie duration.
  • BREAKING: Non-fresh logins now returns HTTP 401.
  • Support unicode user IDs in cookie.
  • Fixes user_logged_out signal invocation.
  • Support for per-Blueprint login views.
  • BREAKING: The is_authenticated, is_active, and is_anonymous members of
    the user class are now properties, not methods. Applications should update
    their user classes accordingly.
  • Various other improvements including documentation and code clean up.

Flask-Migrate 1.5.0 -> 2.0.4

2.0.4

  • Support -x arguments in "migrate" command (148)

2.0.3

  • Support multiple -x arguments in the Flask-Script interface (103)

2.0.2

  • Support passing alembic context kwargs from constructor into init_app (138)

2.0.1

  • Fix flake8 warnings in Alembic templates (136)

2.0.0

  • Added Travis CI builds for Python 3.5
  • Support for the new Flask CLI based on Click

1.8.1

  • Allow to init_app to work correctly when db is given in constructor (118)

1.8.0

  • Allow db to be given in constructor, while app is given later in init_app
  • Added missing Python 2 classifiers in setup script
  • Various documentation updates

1.7.0

  • Added migrate.configure decorator to register configuration callbacks
  • Documentation updates

1.6.0

  • Added support for Alembic's edit command
  • Allow migration directory to be given in constructor and not in init_app

1.5.1

  • Do not generate a migration if no schema changes are found
  • Merge command now supports multiple arguments

Flask-Security 1.7.4 -> 3.0.0

3.0.0


Released TBD

  • Fixed a bug when user clicking confirmation link after confirmation
    and expiration causes confirmation email to resend. (see 556)
  • Added support for I18N.
  • Added options SECURITY_EMAIL_PLAINTEXT and SECURITY_EMAIL_HTML
    for sending respecively plaintext and HTML version of email.
  • Fixed validation when missing login information.
  • Fixed condition for token extraction from JSON body.
  • Better support for universal bdist wheel.
  • Added port of CLI using Click configurable using options
    SECURITY_CLI_USERS_NAME and SECURITY_CLI_ROLES_NAME.
  • Added new configuration option SECURITY_DATETIME_FACTORY which can
    be used to force default timezone for newly created datetimes.
    (see mattupstate/flask-security466)
  • Better IP tracking if using Flask 0.12.
  • Renamed deprecated Flask-WFT base form class.
  • Added tests for custom forms configured using app config.
  • Added validation and tests for next argument in logout endpoint. (see 499)
  • Bumped minimal required versions of several packages.
  • Extended test matric on Travis CI for minimal and released package versions.
  • Added of .editorconfig and forced tests for code style.
  • Fixed a security bug when validating a confirmation token, also checks
    if the email that the token was created with matches the user's current email.
  • Replaced token loader with request loader.
  • Changed trackable behavior of login_user when IP can not be detected from a request from 'untrackable' to None value.
  • Use ProxyFix instead of inspecting X-Forwarded-For header.
  • Fix identical problem with app as with datastore.
  • Removed always-failing assertion.
  • Fixed failure of init_app to set self.datastore.
  • Changed to new style flask imports.
  • Added proper error code when returning JSON response.
  • Changed obsolette Required validator from WTForms to DataRequired. Bumped Flask-WTF to 0.13.
  • Fixed missing SECURITY_SUBDOMAIN in config docs.
  • Added cascade delete in PeeweeDatastore.
  • Added notes to docs about SECURITY_USER_IDENTITY_ATTRIBUTES.
  • Inspect value of SECURITY_UNAUTHORIZED_VIEW.
  • Send password reset instructions if an attempt has expired.
  • Added "Forgot password?" link to LoginForm description.
  • Upgraded passlib, and removed bcrypt version restriction.
  • Removed a duplicate line ('retype_password': 'Retype Password') in forms.py.
  • Various documentation improvement.

1.7.5


Released December 2nd 2015

  • Added SECURITY_TOKEN_MAX_AGE configuration setting
  • Fixed calls to SQLAlchemyUserDatastore.get_user(None) (this now returns False instead of raising a TypeError
  • Fixed URL generation adding extra slashes in some cases (see GitHub 343)
  • Fixed handling of trackable IP addresses when the X-Forwarded-For header contains multiple values
  • Include WWW-Authenticate headers in auth_required authentication checks
  • Fixed error when check_token function is used with a json list
  • Added support for custom AnonymousUser classes
  • Restricted forgot_password endpoint to anonymous users
  • Allowed unauthorized callback to be overridden
  • Fixed issue where passwords cannot be reset if currently set to None
  • Ensured that password reset tokens are invalidated after use
  • Updated is_authenticated and is_active functions to support Flask-Login changes
  • Various documentation improvements

Flask-SQLAlchemy 2.0 -> 2.2

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: pallets-eco/flask-sqlalchemy#328
.. _364: pallets-eco/flask-sqlalchemy#364
.. _373: pallets-eco/flask-sqlalchemy#373
.. _409: pallets-eco/flask-sqlalchemy#409
.. _443: pallets-eco/flask-sqlalchemy#443
.. _460: pallets-eco/flask-sqlalchemy#460
.. _461: pallets-eco/flask-sqlalchemy#461
.. _467: pallets-eco/flask-sqlalchemy#467

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.

Flask-WTF 0.12 -> 0.14.2

0.14.2


Released 2017-01-10

  • Fix bug where FlaskForm assumed meta argument was not None if it
    was passed. (278_)

.. _278: wtforms/flask-wtf#278

0.14.1


Released 2017-01-10

  • Fix bug where the file validators would incorrectly identify an empty file as
    valid data. (276, 277)
  • FileField is no longer deprecated. The data is checked during
    processing and only set if it's a valid file.
  • has_file is deprecated; it's now equivalent to bool(field.data).
  • FileRequired and FileAllowed work with both the Flask-WTF and
    WTForms FileField classes.
  • The Optional validator now works with FileField.

.. _276: wtforms/flask-wtf#276
.. _277: wtforms/flask-wtf#277

0.14


Released 2017-01-06

  • Use itsdangerous to sign CSRF tokens and check expiration instead of doing it
    ourselves. (264_)
  • All tokens are URL safe, removing the url_safe parameter from
    generate_csrf. (206_)
  • All tokens store a timestamp, which is checked in validate_csrf. The
    time_limit parameter of generate_csrf is removed.
  • Remove the app attribute from CsrfProtect, use current_app.
    (264_)
  • CsrfProtect protects the DELETE method by default. (264_)
  • The same CSRF token is generated for the lifetime of a request. It is exposed
    as g.csrf_token for use during testing. (227, 264)
  • CsrfProtect.error_handler is deprecated. (264_)
  • Handlers that return a response work in addition to those that raise an
    error. The behavior was not clear in previous docs.
  • (200, 209, 243, 252)
  • Use Form.Meta instead of deprecated SecureForm for CSRF (and
    everything else). (216, 271)
  • csrf_enabled parameter is still recognized but deprecated. All other
    attributes and methods from SecureForm are removed. (271_)
  • Provide WTF_CSRF_FIELD_NAME to configure the name of the CSRF token.
    (271_)
  • validate_csrf raises wtforms.ValidationError with specific messages
    instead of returning True or False. This breaks anything that was
    calling the method directly. (239, 271)
  • CSRF errors are logged as well as raised. (239_)
  • CsrfProtect is renamed to CSRFProtect. A deprecation warning is issued
    when using the old name. CsrfError is renamed to CSRFError without
    deprecation. (271_)
  • FileField is deprecated because it no longer provides functionality over
    the provided validators. Use wtforms.FileField directly. (272_)

.. _200: wtforms/flask-wtf#200
.. _209: wtforms/flask-wtf#209
.. _216: wtforms/flask-wtf#216
.. _227: wtforms/flask-wtf#227
.. _239: wtforms/flask-wtf#239
.. _243: wtforms/flask-wtf#243
.. _252: wtforms/flask-wtf#252
.. _264: wtforms/flask-wtf#264
.. _271: wtforms/flask-wtf#271
.. _272: wtforms/flask-wtf#272

0.13.1


Released 2016/10/6

  • Deprecation warning for Form is shown during __init__ instead of immediately when subclassing. (262_)
  • Don't use pkg_resources to get version, for compatibility with GAE. (261_)

.. _261: wtforms/flask-wtf#261
.. _262: wtforms/flask-wtf#262

0.13


Released 2016/09/29

  • Form is renamed to FlaskForm in order to avoid name collision with WTForms's base class. Using Form will show a deprecation warning. (250_)
  • hidden_tag no longer wraps the hidden inputs in a hidden div. This is valid HTML5 and any modern HTML parser will behave correctly. (217, 193)
  • flask_wtf.html5 is deprecated. Import directly from wtforms.fields.html5. (251_)
  • is_submitted is true for PATCH and DELETE in addition to POST and PUT. (187_)
  • generate_csrf takes a token_key parameter to specify the key stored in the session. (206_)
  • generate_csrf takes a url_safe parameter to allow the token to be used in URLs. (206_)
  • form.data can be accessed multiple times without raising an exception. (248_)
  • File extension with multiple parts (.tar.gz) can be used in the FileAllowed validator. (201_)

.. _187: wtforms/flask-wtf#187
.. _193: wtforms/flask-wtf#193
.. _201: wtforms/flask-wtf#201
.. _206: wtforms/flask-wtf#206
.. _217: wtforms/flask-wtf#217
.. _248: wtforms/flask-wtf#248
.. _250: wtforms/flask-wtf#250
.. _251: wtforms/flask-wtf#251

alembic 0.8.1 -> 0.9.2

0.9.2

:released: May 18, 2017

.. change:: 429
:tags: bug, mssql
🎟️ 429

 Repaired :meth:`.Operations.rename_table` for SQL Server when the
 target table is in a remote schema, the schema name is omitted from
 the &quot;new name&quot; argument.

.. change:: 425
:tags: feature, commands
🎟️ 425

 Added a new configuration option ``timezone``, a string timezone name
 that will be applied to the create date timestamp rendered
 inside the revision file as made availble to the ``file_template`` used
 to generate the revision filename.  Note this change adds the
 ``python-dateutil`` package as a dependency.

.. change:: 421
:tags: bug, autogenerate
🎟️ 421

 The autogenerate compare scheme now takes into account the name truncation
 rules applied by SQLAlchemy&#39;s DDL compiler to the names of the
 :class:`.Index` object, when these names are dynamically truncated
 due to a too-long identifier name.   As the identifier truncation is
 deterministic, applying the same rule to the metadata name allows
 correct comparison to the database-derived name.

.. change:: 419
:tags: bug environment
🎟️ 419

 A warning is emitted when an object that&#39;s not a
 :class:`~sqlalchemy.engine.Connection` is passed to
 :meth:`.EnvironmentContext.configure`.  For the case of a
 :class:`~sqlalchemy.engine.Engine` passed, the check for &quot;in transaction&quot;
 introduced in version 0.9.0 has been relaxed to work in the case of an
 attribute error, as some users appear to be passing an
 :class:`~sqlalchemy.engine.Engine` and not a
 :class:`~sqlalchemy.engine.Connection`.

.. changelog::

0.9.1

:released: March 1, 2017

.. change:: 417
:tags: bug, commands
🎟️ 417, 369

 An adjustment to the bug fix for :ticket:`369` to accommodate for
 env.py scripts that use an enclosing transaction distinct from the
 one that the context provides, so that the check for &quot;didn&#39;t commit
 the transaction&quot; doesn&#39;t trigger in this scenario.

.. changelog::

0.9.0

:released: February 28, 2017

.. change:: 38
:tags: feature, autogenerate
🎟️ 38

 The :paramref:`.EnvironmentContext.configure.target_metadata` parameter
 may now be optionally specified as a sequence of :class:`.MetaData`
 objects instead of a single :class:`.MetaData` object.  The
 autogenerate process will process the sequence of :class:`.MetaData`
 objects in order.

.. change:: 369
:tags: bug, commands
🎟️ 369

 A :class:`.CommandError` is now raised when a migration file opens
 a database transaction and does not close/commit/rollback, when
 the backend database or environment options also specify transactional_ddl
 is False.   When transactional_ddl is not in use, Alembic doesn&#39;t
 close any transaction so a transaction opened by a migration file
 will cause the following migrations to fail to apply.

.. change:: 413
:tags: bug, autogenerate, mysql
🎟️ 413

 The ``autoincrement=True`` flag is now rendered within the
 :meth:`.Operations.alter_column` operation if the source column indicates
 that this flag should be set to True.  The behavior is sensitive to
 the SQLAlchemy version in place, as the &quot;auto&quot; default option is new
 in SQLAlchemy 1.1.  When the source column indicates autoincrement
 as True or &quot;auto&quot;, the flag will render as True if the original column
 contextually indicates that it should have &quot;autoincrement&quot; keywords,
 and when the source column explcitly sets it to False, this is also
 rendered.  The behavior is intended to preserve the AUTO_INCREMENT flag
 on MySQL as the column is fully recreated on this backend.  Note that this
 flag does **not** support alteration of a column&#39;s &quot;autoincrement&quot; status,
 as this is not portable across backends.

.. change:: 411
:tags: bug, postgresql
🎟️ 411

 Fixed bug where Postgresql JSON/JSONB types rendered on SQLAlchemy
 1.1 would render the &quot;astext_type&quot; argument which defaults to
 the ``Text()`` type without the module prefix, similarly to the
 issue with ARRAY fixed in :ticket:`85`.

.. change:: 85
:tags: bug, postgresql
🎟️ 85

 Fixed bug where Postgresql ARRAY type would not render the import prefix
 for the inner type; additionally, user-defined renderers take place
 for the inner type as well as the outer type.  Pull request courtesy
 Paul Brackin.

.. change:: process_revision_directives_command
:tags: feature, autogenerate

 Added a keyword argument ``process_revision_directives`` to the
 :func:`.command.revision` API call.  This function acts in the
 same role as the environment-level
 :paramref:`.EnvironmentContext.configure.process_revision_directives`,
 and allows API use of the
 command to drop in an ad-hoc directive process function.  This
 function can be used among other things to place a complete
 :class:`.MigrationScript` structure in place.

.. change:: 412
:tags: feature, postgresql
🎟️ 412

 Added support for Postgresql EXCLUDE constraints, including the
 operation directive :meth:`.Operations.create_exclude_constraints`
 as well as autogenerate render support for the ``ExcludeConstraint``
 object as present in a ``Table``.  Autogenerate detection for an EXCLUDE
 constraint added or removed to/from an existing table is **not**
 implemented as the SQLAlchemy Postgresql dialect does not yet support
 reflection of EXCLUDE constraints.
 Additionally, unknown constraint types now warn when
 encountered within an autogenerate action rather than raise.

.. change:: fk_schema_compare
:tags: bug, operations

 Fixed bug in :func:`.ops.create_foreign_key` where the internal table
 representation would not be created properly if the foriegn key referred
 to a table in a different schema of the same name.  Pull request
 courtesy Konstantin Lebedev.

.. changelog::

0.8.10

:released: January 17, 2017

.. change:: 406
:tags: bug, versioning
🎟️ 406

 The alembic_version table, when initially created, now establishes a
 primary key constraint on the &quot;version_num&quot; column, to suit database
 engines that don&#39;t support tables without primary keys.   This behavior
 can be controlled using the parameter
 :paramref:`.EnvironmentContext.configure.version_table_pk`.  Note that
 this change only applies to the initial creation of the alembic_version
 table; it does not impact any existing alembic_version table already
 present.

.. change:: 402
:tags: bug, batch
🎟️ 402

 Fixed bug where doing ``batch_op.drop_constraint()`` against the
 primary key constraint would fail to remove the &quot;primary_key&quot; flag
 from the column, resulting in the constraint being recreated.

.. change:: update_uq_dedupe
:tags: bug, autogenerate, oracle

 Adjusted the logic originally added for :ticket:`276` that detects MySQL
 unique constraints which are actually unique indexes to be generalized
 for any dialect that has this behavior, for SQLAlchemy version 1.0 and
 greater.  This is to allow for upcoming SQLAlchemy support for unique
 constraint reflection for Oracle, which also has no dedicated concept of
 &quot;unique constraint&quot; and instead establishes a unique index.

.. change:: 356
:tags: bug, versioning
🎟️ 356

 Added a file ignore for Python files of the form ``.&lt;name&gt;.py``,
 which are generated by the Emacs editor.  Pull request courtesy
 Markus Mattes.

.. changelog::

0.8.9

:released: November 28, 2016

.. change:: 393
:tags: bug, autogenerate
🎟️ 393

 Adjustment to the &quot;please adjust!&quot; comment in the script.py.mako
 template so that the generated comment starts with a single pound
 sign, appeasing flake8.

.. change::
:tags: bug, batch
🎟️ 391

 Batch mode will not use CAST() to copy data if type_ is given, however
 the basic type affinity matches that of the existing type.  This to
 avoid SQLite&#39;s CAST of TIMESTAMP which results in truncation of the
 data, in those cases where the user needs to add redundant type_ for
 other reasons.

.. change::
:tags: bug, autogenerate
🎟️ 393

 Continued pep8 improvements by adding appropriate whitespace in
 the base template for generated migrations.  Pull request courtesy
 Markus Mattes.

.. change::
:tags: bug, revisioning

 Added an additional check when reading in revision files to detect
 if the same file is being read twice; this can occur if the same directory
 or a symlink equivalent is present more than once in version_locations.
 A warning is now emitted and the file is skipped.  Pull request courtesy
 Jiri Kuncar.

.. change::
:tags: bug, autogenerate
🎟️ 395

 Fixed bug where usage of a custom TypeDecorator which returns a
 per-dialect type via :meth:`.TypeDecorator.load_dialect_impl` that differs
 significantly from the default &quot;impl&quot; for the type decorator would fail
 to compare correctly during autogenerate.

.. change::
:tags: bug, autogenerate, postgresql
🎟️ 392

 Fixed bug in Postgresql &quot;functional index skip&quot; behavior where a
 functional index that ended in ASC/DESC wouldn&#39;t be detected as something
 we can&#39;t compare in autogenerate, leading to duplicate definitions
 in autogenerated files.

.. change::
:tags: bug, versioning

 Fixed bug where the &quot;base&quot; specifier, as in &quot;base:head&quot;, could not
 be used explicitly when ``--sql`` mode was present.

.. changelog::

0.8.8

:released: September 12, 2016

.. change::
:tags: autogenerate

  The imports in the default script.py.mako are now at the top
  so that flake8 editors don&#39;t complain by default.  PR courtesy
  Guilherme Mansur.

.. change::
:tags: feature, operations, postgresql
🎟️ 292

 Added support for the USING clause to the ALTER COLUMN operation
 for Postgresql.  Support is via the
 :paramref:`.op.alter_column.postgresql_using`
 parameter.  Pull request courtesy Frazer McLean.

.. change::
:tags: feature, autogenerate

 Autogenerate with type comparison enabled will pick up on the timezone
 setting changing between DateTime types.   Pull request courtesy
 David Szotten.

.. changelog::

0.8.7

:released: July 26, 2016

.. change::
:tags: bug, versioning
🎟️ 336

 Fixed bug where upgrading to the head of a branch which is already
 present would fail, only if that head were also the dependency
 of a different branch that is also upgraded, as the revision system
 would see this as trying to go in the wrong direction.   The check
 here has been refined to distinguish between same-branch revisions
 out of order vs. movement along sibling branches.

.. change::
:tags: bug, versioning
🎟️ 379

 Adjusted the version traversal on downgrade
 such that we can downgrade to a version that is a dependency for
 a version in a different branch, *without* needing to remove that
 dependent version as well.  Previously, the target version would be
 seen as a &quot;merge point&quot; for it&#39;s normal up-revision as well as the
 dependency.  This integrates with the changes for :ticket:`377`
 and :ticket:`378` to improve treatment of branches with dependencies
 overall.

.. change::
:tags: bug, versioning
🎟️ 377

 Fixed bug where a downgrade to a version that is also a dependency
 to a different branch would fail, as the system attempted to treat
 this as an &quot;unmerge&quot; of a merge point, when in fact it doesn&#39;t have
 the other side of the merge point available for update.

.. change::
:tags: bug, versioning
🎟️ 378

 Fixed bug where the &quot;alembic current&quot; command wouldn&#39;t show a revision
 as a current head if it were also a dependency of a version in a
 different branch that&#39;s also applied.   Extra logic is added to
 extract &quot;implied&quot; versions of different branches from the top-level
 versions listed in the alembic_version table.

.. change::
:tags: bug, versioning

 Fixed bug where a repr() or str() of a Script object would fail
 if the script had multiple dependencies.

.. change::
:tags: bug, autogenerate

 Fixed bug in autogen where if the DB connection sends the default
 schema as &quot;None&quot;, this &quot;None&quot; would be removed from the list of
 schemas to check if include_schemas were set.  This could possibly
 impact using include_schemas with SQLite.

.. change::
:tags: bug, batch

 Small adjustment made to the batch handling for reflected CHECK
 constraints to accommodate for SQLAlchemy 1.1 now reflecting these.
 Batch mode still does not support CHECK constraints from the reflected
 table as these can&#39;t be easily differentiated from the ones created
 by types such as Boolean.

.. changelog::

0.8.6

:released: April 14, 2016

.. change::
:tags: bug, commands
🎟️ 367

 Errors which occur within the Mako render step are now intercepted
 and raised as CommandErrors like other failure cases; the Mako
 exception itself is written using template-line formatting to
 a temporary file which is named in the exception message.

.. change::
:tags: bug, postgresql
🎟️ 365

 Added a fix to Postgresql server default comparison which first checks
 if the text of the default is identical to the original, before attempting
 to actually run the default.  This accomodates for default-generation
 functions that generate a new value each time such as a uuid function.

.. change::
:tags: bug, batch
🎟️ 361
:pullreq: bitbucket:55

 Fixed bug introduced by the fix for :ticket:`338` in version 0.8.4
 where a server default could no longer be dropped in batch mode.
 Pull request courtesy Martin Domke.

.. change::
:tags: bug, batch, mssql
:pullreq: bitbucket:53

 Fixed bug where SQL Server arguments for drop_column() would not
 be propagated when running under a batch block.  Pull request
 courtesy Michal Petrucha.

.. changelog::

0.8.5

:released: March 9, 2016

.. change::
:tags: bug, autogenerate
🎟️ 335
:pullreq: bitbucket:49

 Fixed bug where the columns rendered in a ``PrimaryKeyConstraint``
 in autogenerate would inappropriately render the &quot;key&quot; of the
 column, not the name.  Pull request courtesy Jesse Dhillon.

.. change::
:tags: bug, batch
🎟️ 354

 Repaired batch migration support for &quot;schema&quot; types which generate
 constraints, in particular the ``Boolean`` datatype which generates
 a CHECK constraint.  Previously, an alter column operation with this
 type would fail to correctly accommodate for the CHECK constraint
 on change both from and to this type.  In the former case the operation
 would fail entirely, in the latter, the CHECK constraint would
 not get generated.  Both of these issues are repaired.

.. change::
:tags: bug, mysql
🎟️ 355

 Changing a schema type such as ``Boolean`` to a non-schema type would
 emit a drop constraint operation which emits ``NotImplementedError`` for
 the MySQL dialect.  This drop constraint operation is now skipped when
 the constraint originates from a schema type.

.. changelog::

0.8.4

:released: December 15, 2015

.. change::
:tags: feature, versioning
:pullreq: bitbucket:51

 A major improvement to the hash id generation function, which for some
 reason used an awkward arithmetic formula against uuid4() that produced
 values that tended to start with the digits 1-4.  Replaced with a
 simple substring approach which provides an even distribution.  Pull
 request courtesy Antti Haapala.

.. change::
:tags: feature, autogenerate
:pullreq: github:20

 Added an autogenerate renderer for the :class:`.ExecuteSQLOp` operation
 object; only renders if given a plain SQL string, otherwise raises
 NotImplementedError.  Can be of help with custom autogenerate
 sequences that includes straight SQL execution.  Pull request courtesy
 Jacob Magnusson.

.. change::
:tags: bug, batch
🎟️ 345

 Batch mode generates a FOREIGN KEY constraint that is self-referential
 using the ultimate table name, rather than ``_alembic_batch_temp``.
 When the table is renamed from ``_alembic_batch_temp`` back to the
 original name, the FK now points to the right name.  This
 will **not** work if referential integrity is being enforced (eg. SQLite
 &quot;PRAGMA FOREIGN_KEYS=ON&quot;) since the original table is dropped and
 the new table then renamed to that name, however this is now consistent
 with how foreign key constraints on **other** tables already operate
 with batch mode; these don&#39;t support batch mode if referential integrity
 is enabled in any case.

.. change::
:tags: bug, autogenerate
🎟️ 341

 Added a type-level comparator that distinguishes :class:`.Integer`,
 :class:`.BigInteger`, and :class:`.SmallInteger` types and
 dialect-specific types; these all have &quot;Integer&quot; affinity so previously
 all compared as the same.

.. change::
:tags: bug, batch
🎟️ 338

 Fixed bug where the ``server_default`` parameter of ``alter_column()``
 would not function correctly in batch mode.

.. change::
:tags: bug, autogenerate
🎟️ 337

 Adjusted the rendering for index expressions such that a :class:`.Column`
 object present in the source :class:`.Index` will not be rendered
 as table-qualified; e.g. the column name will be rendered alone.
 Table-qualified names here were failing on systems such as Postgresql.

.. changelog::

0.8.3

:released: October 16, 2015

.. change::
:tags: bug, autogenerate
🎟️ 332

 Fixed an 0.8 regression whereby the &quot;imports&quot; dictionary member of
 the autogen context was removed; this collection is documented in the
 &quot;render custom type&quot; documentation as a place to add new imports.
 The member is now known as
 :attr:`.AutogenContext.imports` and the documentation is repaired.

.. change::
:tags: bug, batch
🎟️ 333

 Fixed bug in batch mode where a table that had pre-existing indexes
 would create the same index on the new table with the same name,
 which on SQLite produces a naming conflict as index names are in a
 global namespace on that backend.   Batch mode now defers the production
 of both existing and new indexes until after the entire table transfer
 operation is complete, which also means those indexes no longer take
 effect during the INSERT from SELECT section as well; the indexes
 are applied in a single step afterwards.

.. change::
:tags: bug, tests
:pullreq: bitbucket:47

 Added &quot;pytest-xdist&quot; as a tox dependency, so that the -n flag
 in the test command works if this is not already installed.
 Pull request courtesy Julien Danjou.

.. change::
:tags: bug, autogenerate, postgresql
🎟️ 324

 Fixed issue in PG server default comparison where model-side defaults
 configured with Python unicode literals would leak the &quot;u&quot; character
 from a ``repr()`` into the SQL used for comparison, creating an invalid
 SQL expression, as the server-side comparison feature in PG currently
 repurposes the autogenerate Python rendering feature to get a quoted
 version of a plain string default.

.. changelog::

0.8.2

:released: August 25, 2015

.. change::
:tags: bug, autogenerate
🎟️ 321

 Added workaround in new foreign key option detection feature for
 MySQL&#39;s consideration of the &quot;RESTRICT&quot; option being the default,
 for which no value is reported from the database; the MySQL impl now
 corrects for when the model reports RESTRICT but the database reports
 nothing.   A similar rule is in the default FK comparison to accommodate
 for the default &quot;NO ACTION&quot; setting being present in the model but not
 necessarily reported by the database, or vice versa.

.. changelog::

GeoAlchemy2 0.2.5 -> 0.4.0

0.4.0


  • Adapt links for "Read the Docs". adamchainz (134)
  • Simplify and fix tests. elemoine (138)
  • Set result_type when using operators. elemoine (140)
  • Add use_typmod option for AddGeometryColumn. tsauerwein (141)

0.3.0


  • Read geometries with ST_AsEWKB. loicgasser, fredj, elemoine (122)
  • Fix SpatialElement.str on Python 3 b11z, elemoine (130)
  • Fix flake8 in tests loicgrasser (125)

0.2.6


  • Distribute GeoAlchemy as wheels (114)

SQLAlchemy 1.0.8 -> 1.1.10

1.1.10

:released: Friday, May 19, 2017

.. change:: 3986
:tags: bug, orm
:versions: 1.2.0b1
🎟️ 3986

   Fixed bug where a cascade such as &quot;delete-orphan&quot; (but others as well)
   would fail to locate an object linked to a relationship that itself
   is local to a subclass in an inheritance relationship, thus causing
   the operation to not take place.

.. change:: 3975
:tags: bug, oracle
:versions: 1.2.0b1
🎟️ 3975

   Fixed bug in cx_Oracle dialect where version string parsing would
   fail for cx_Oracle version 6.0b1 due to the &quot;b&quot; character.  Version
   string parsing is now via a regexp rather than a simple split.

.. change:: 3980
:tags: bug, ext
:versions: 1.2.0b1
🎟️ 3980

   Protected against testing &quot;None&quot; as a class in the case where
   declarative classes are being garbage collected and new
   automap prepare() operations are taking place concurrently, very
   infrequently hitting a weakref that has not been fully acted upon
   after gc.

.. change::
:tags: bug, postgresql
:versions: 1.2.0b1

   Added &quot;autocommit&quot; support for GRANT, REVOKE keywords.  Pull request
   courtesy Jacob Hayes.

.. change:: 3966
:tags: bug, mysql
:versions: 1.2.0b1
🎟️ 3966

   Removed an ancient and unnecessary intercept of the UTC_TIMESTAMP
   MySQL function, which was getting in the way of using it with a
   parameter.

.. change:: 3961
:tags: bug, mysql
:versions: 1.2.0b1
🎟️ 3961

   Fixed bug in MySQL dialect regarding rendering of table options in
   conjunction with PARTITION options when rendering CREATE TABLE.
   The PARTITION related options need to follow the table options,
   whereas previously this ordering was not enforced.

.. changelog::

1.1.9

:released: April 4, 2017

.. change:: 3956
:tags: bug, ext
🎟️ 3956

   Fixed regression released in 1.1.8 due to :ticket:`3950` where the
   deeper search for information about column types in the case of a
   &quot;schema type&quot; or a :class:`.TypeDecorator` would produce an attribute
   error if the mapping also contained a :obj:`.column_property`.

.. change:: 3952
:tags: bug, sql
:versions: 1.2.0b1
🎟️ 3952

   Fixed regression released in 1.1.5 due to :ticket:`3859` where
   adjustments to the &quot;right-hand-side&quot; evaluation of an expression
   based on :class:`.Variant` to honor the underlying type&#39;s
   &quot;right-hand-side&quot; rules caused the :class:`.Variant` type
   to be inappropriately lost, in those cases when we *do* want the
   left-hand side type to be transferred directly to the right hand side
   so that bind-level rules can be applied to the expression&#39;s argument.

.. change:: 3955
:tags: bug, sql, postgresql
:versions: 1.2.0b1
🎟️ 3955

   Changed the mechanics of :class:`.ResultProxy` to unconditionally
   delay the &quot;autoclose&quot; step until the :class:`.Connection` is done
   with the object; in the case where Postgresql ON CONFLICT with
   RETURNING returns no rows, autoclose was occurring in this previously
   non-existent use case, causing the usual autocommit behavior that
   occurs unconditionally upon INSERT/UPDATE/DELETE to fail.

.. changelog::

1.1.8

:released: March 31, 2017

.. change:: 3950
:tags: bug, ext
:versions: 1.2.0b1
🎟️ 3950

   Fixed bug in :mod:`sqlalchemy.ext.mutable` where the
   :meth:`.Mutable.as_mutable` method would not track a type that had
   been copied using :meth:`.TypeEngine.copy`.  This became more of
   a regression in 1.1 compared to 1.0 because the :class:`.TypeDecorator`
   class is now a subclass of :class:`.SchemaEventTarget`, which among
   other things indicates to the parent :class:`.Column` that the type
   should be copied when the :class:`.Column` is.  These copies are
   common when using declarative with mixins or abstract classes.

.. change::
:tags: bug, ext
:versions: 1.2.0b1

   Added sup

@abkfenris abkfenris closed this Dec 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants