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

installation: bump dependencies (pin wtforms = "<3.0.0") #1052

Merged
merged 1 commit into from
Nov 7, 2024

Conversation

ptamarit
Copy link
Member

@ptamarit ptamarit commented Nov 7, 2024

📁 invenio-accounts (5.1.4 -> 5.1.5 🐛)

release: v5.1.5
model: make forward compatible to sqlalchemy >= 2

📁 invenio-admin (1.4.0 -> 1.4.1 🐛)

📦 release: v1.4.1
docs: fix intersphinx config
setup: pin wtforms

3.2.0 makes a breaking change https://wtforms.readthedocs.io/en/3.2.x/changes/

📁 invenio-banners (3.1.1 -> 3.2.0 🌈)

release: v3.2.0
feat(tests): add test for html banner message
feat(administration): use html editor for message
global: use uow instead of explicit commit
refactor: use session.get where possible

* recomended sqlalchemy syntax for sqlalchemy >= 2.0 fix: tests

* test_banner_creation uses the active banner. the service method which is tested validates the data over the schema where start_datetime and end_datetime is a required field and it has to look like: '%Y-%m-%d %H:%M:%S'

* the problem is that test_read_banner uses the same banner to test the read service. the change in "active" has the effect that the stored value in the database is not like "2024-07-10 12:04:03.348391" which it is due the strftime function is not used. db.DateTime could only bring back the date in form of a datetime object which is then used in isoformat if the value in the database contains the ".34383" part.

* therefore the easiest solution is to use for test_read_banner the "other" banner

* ATTENTION: be cautious during the migration from utcnow to now(timezone.utc) global: apply new SQLAlchemy rules

* change from model Model.query to db.session.query(Model)

* without an update in pytest-invenio and without this commit it produces following errors: "sqlalchemy.exc.InvalidRequestError: Can't operate on closed transaction inside context manager. Please complete the context manager before emitting further commands." and 'sqlalchemy.exc.IntegrityError: (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint "uq_accounts_user_email"'

* with the updated db fixture in pytest-inveniothis this commit fixes following TypeError: 'Session' object is not callable fix: SADeprecationWarning

* SADeprecationWarning: Invoking or_() without arguments is deprecated,
  and will be disallowed in a future release.   For an empty or_()
  construct, use 'or_(false(), *args)' or 'or_(False, *args)'.
    BannerModel.query.filter(or_(*filters))

* https://github.com/sqlalchemy/sqlalchemy/issues/5054 fix: SAWarning

* SAWarning: "This declarative base already contains a class with the " "same class name and module name as %s.%s, and will " "be replaced in the string-lookup table."

* if a model should not be versioned the __versioned__ should not be there at all

* if it is there, it will be added to version_manager.pending_classes (which seems like a bug, because it is versioning set to false)

* those pending_classes will be checked against declared classes in invenio_db.ext and since the banner model should not have a versioned table it is not in the declared_classes list. this starts then a try of the version_manager to create the missing tables which causes then a duplicate error which is shown in the SAWarning fix: add compatibility layer to move to flask>=3

* flask-sqlalchemy moved pagination.

* this change has been added to have a smooth migration to flask>=3.0.0 without creating a hard cut and major versions release. :package: release: v3.1.1

📁 invenio-files-rest (2.2.1 -> 2.2.2 🐛)

release: v2.2.2
fix: LegacyAPIWarning of sqlalchemy

* LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0. The method is now available as Session.get() (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9) role = current_datastore.role_model.query.get(id_) global: move to db.session.query syntax

* this change is a working solution for sqlalchemy ~= 1.4 but a necessity for >= 2.0 fix: compatibility with werkzeug >= 3.0.0.

* to keep the functionality as it is, a method from werkzeug have been copy pasted over and changed slightly.

📁 invenio-oauthclient (4.0.2 -> 4.1.0 🌈)

release: v4.1.0
setup: remove upper pins oauthlib,requests-oauthlib

* this change was done to migrate to flask >= 3.0 global: jws use from invenio-base

* jws functionality has been moved to invenio-base because itsdangerous removes it with v2.1.0 fix: for flask >= 3.0.0 compatibility

* flask >= 3.0.0 removes Markup. to keep the functionality Markup has to be imported from markupsafe directly

📁 invenio-pidstore (1.3.1 -> 1.3.2 🐛)

release: v1.3.2
model: make forward compatible to sqlalchemy >= 2
i18n:push translations
fix: black
setup: move pytest-black-ng

* former is unsupported fix: deprecation warning for sphinx i18n:pulled translations (inveniosoftware/invenio-pidstore#153)

transifex: update config (inveniosoftware/invenio-pidstore#150)

ci: use i18n reusable workflows

📁 invenio-rdm-records (15.7.0 -> 15.7.1 🐛)

release: v15.7.1
installation: bump babel-edtf to >=1.2.0

* This is to enforce `edtf>=5`, which has a fix for supporting EDTF intervals with unknown start/end. use correct subkey rename variable to be more precise fix inveniosoftware/invenio-rdm-records#1846 setup: forward compatibility to itsdangerous>=2.1

* itsdangerous v2.1 removed the jws functionality

* the jws functionality has been copy pasted to invenio-base to provide it further fix: DeprecationWarning of SQLAlchemy

* Query.get() is deprecated in favor of Session.get()

📁 invenio-records (2.4.0 -> 2.4.1 🐛)

release: v2.4.1
model: make forward compatible to sqlalchemy >= 2

📁 invenio-users-resources (6.1.0 -> 6.1.1 🐛)

release: v6.1.1
global: make forward compatible to sqlalchemy >= 2

* LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0. The method is now available as Session.get() (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9) role = current_datastore.role_model.query.get(id_)

📁 invenio-accounts (5.1.4 -> 5.1.5 🐛)

    release: v5.1.5
    model: make forward compatible to sqlalchemy >= 2

📁 invenio-admin (1.4.0 -> 1.4.1 🐛)

    📦 release: v1.4.1
    docs: fix intersphinx config
    setup: pin wtforms

    3.2.0 makes a breaking change https://wtforms.readthedocs.io/en/3.2.x/changes/

📁 invenio-banners (3.1.1 -> 3.2.0 🌈)

    release: v3.2.0
    feat(tests): add test for html banner message
    feat(administration): use html editor for message
    global: use uow instead of explicit commit
    refactor: use session.get where possible

    * recomended sqlalchemy syntax for sqlalchemy >= 2.0
    fix: tests

    * test_banner_creation uses the active banner. the service method which
      is tested validates the data over the schema where start_datetime and
      end_datetime is a required field and it has to look like:
      '%Y-%m-%d %H:%M:%S'

    * the problem is that test_read_banner uses the same banner to test the
      read service. the change in "active" has the effect that the stored
      value in the database is not like "2024-07-10 12:04:03.348391" which
      it is due the strftime function is not used. db.DateTime could only
      bring back the date in form of a datetime object which is then used in
      isoformat if the value in the database contains the ".34383" part.

    * therefore the easiest solution is to use for test_read_banner the
      "other" banner

    * ATTENTION: be cautious during the migration from utcnow to
      now(timezone.utc)
    global: apply new SQLAlchemy rules

    * change from model Model.query to db.session.query(Model)

    * without an update in pytest-invenio and without this commit it
      produces following errors: "sqlalchemy.exc.InvalidRequestError: Can't
      operate on closed transaction inside context manager. Please complete
      the context manager before emitting further commands." and
      'sqlalchemy.exc.IntegrityError: (psycopg2.errors.UniqueViolation)
      duplicate key value violates unique constraint "uq_accounts_user_email"'

    * with the updated db fixture in pytest-inveniothis this commit fixes
      following TypeError: 'Session' object is not callable
    fix: SADeprecationWarning

    * SADeprecationWarning: Invoking or_() without arguments is deprecated,
      and will be disallowed in a future release.   For an empty or_()
      construct, use 'or_(false(), *args)' or 'or_(False, *args)'.
        BannerModel.query.filter(or_(*filters))

    * sqlalchemy/sqlalchemy#5054
    fix: SAWarning

    * SAWarning:
      "This declarative base already contains a class with the "
      "same class name and module name as %s.%s, and will "
      "be replaced in the string-lookup table."

    * if a model should not be versioned the __versioned__ should not be
      there at all

    * if it is there, it will be added to
      version_manager.pending_classes (which seems like a bug, because it is
      versioning set to false)

    * those pending_classes will be checked against declared classes in
      invenio_db.ext and since the banner model should not have a versioned
      table it is not in the declared_classes list. this starts then a try
      of the version_manager to create the missing tables which causes then
      a duplicate error which is shown in the SAWarning
    fix: add compatibility layer to move to flask>=3

    * flask-sqlalchemy moved pagination.

    * this change has been added to have a smooth migration to flask>=3.0.0
      without creating a hard cut and major versions release.
    📦 release: v3.1.1

📁 invenio-files-rest (2.2.1 -> 2.2.2 🐛)

    release: v2.2.2
    fix: LegacyAPIWarning of sqlalchemy

    * LegacyAPIWarning: The Query.get() method is considered legacy as of
      the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0.
      The method is now available as Session.get() (deprecated since:
      2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
      role = current_datastore.role_model.query.get(id_)
    global: move to db.session.query syntax

    * this change is a working solution for sqlalchemy ~= 1.4 but a
      necessity for >= 2.0
    fix: compatibility with werkzeug >= 3.0.0.

    * to keep the functionality as it is, a method from werkzeug have been
      copy pasted over and changed slightly.

📁 invenio-oauthclient (4.0.2 -> 4.1.0 🌈)

    release: v4.1.0
    setup: remove upper pins oauthlib,requests-oauthlib

    * this change was done to migrate to flask >= 3.0
    global: jws use from invenio-base

    * jws functionality has been moved to invenio-base because itsdangerous
      removes it with v2.1.0
    fix: for flask >= 3.0.0 compatibility

    * flask >= 3.0.0 removes Markup. to keep the functionality Markup has to
      be imported from markupsafe directly

📁 invenio-pidstore (1.3.1 -> 1.3.2 🐛)

    release: v1.3.2
    model: make forward compatible to sqlalchemy >= 2
    i18n:push translations
    fix: black
    setup: move pytest-black-ng

    * former is unsupported
    fix: deprecation warning for sphinx
    i18n:pulled translations (inveniosoftware/invenio-pidstore#153)

    transifex: update config (inveniosoftware/invenio-pidstore#150)

    ci: use i18n reusable workflows

📁 invenio-rdm-records (15.7.0 -> 15.7.1 🐛)

    release: v15.7.1
    installation: bump babel-edtf to >=1.2.0

    * This is to enforce `edtf>=5`, which has a fix for supporting EDTF
      intervals with unknown start/end.
    use correct subkey
    rename variable to be more precise
    fix inveniosoftware/invenio-rdm-records#1846
    setup: forward compatibility to itsdangerous>=2.1

    * itsdangerous v2.1 removed the jws functionality

    * the jws functionality has been copy pasted to invenio-base to provide
      it further
    fix: DeprecationWarning of SQLAlchemy

    * Query.get() is deprecated in favor of Session.get()

📁 invenio-records (2.4.0 -> 2.4.1 🐛)

    release: v2.4.1
    model: make forward compatible to sqlalchemy >= 2

📁 invenio-users-resources (6.1.0 -> 6.1.1 🐛)

    release: v6.1.1
    global: make forward compatible to sqlalchemy >= 2

    * LegacyAPIWarning: The Query.get() method is considered legacy as of
      the 1.x series of SQLAlchemy and becomes a legacy construct in 2.0.
      The method is now available as Session.get() (deprecated since:
      2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
      role = current_datastore.role_model.query.get(id_)
@ptamarit ptamarit requested a review from slint November 7, 2024 15:13
Copy link
Member

@slint slint left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we're good in terms of bumps, but we should in any case deploy QA first and watch for any exotic errors on Sentry

@ptamarit ptamarit merged commit 9adce72 into zenodo:master Nov 7, 2024
3 checks passed
@ptamarit ptamarit deleted the installation-bump-dependencies branch November 7, 2024 15:24
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.

2 participants