Skip to content

Bump vertica-python to 1.4.0 to restore the Vertica data source on Python 3.13 - #7808

Open
ekanshul wants to merge 1 commit into
getredash:masterfrom
ekanshul:bump-vertica-python
Open

Bump vertica-python to 1.4.0 to restore the Vertica data source on Python 3.13#7808
ekanshul wants to merge 1 commit into
getredash:masterfrom
ekanshul:bump-vertica-python

Conversation

@ekanshul

@ekanshul ekanshul commented Sep 10, 2026

Copy link
Copy Markdown

What type of PR is this?

  • Bug Fix

Description

Fixes #7801.

Since #7636 the image is built on Python 3.13, but vertica-python is still pinned to 1.1.1 (2022). That version does an unconditional import crypt on non-Windows platforms (password.py@1.1.1), and Python 3.13 removed the crypt module (PEP 594):

>>> import vertica_python
  File ".../vertica_python/vertica/messages/frontend_messages/password.py", line 49, in <module>
    import crypt
ModuleNotFoundError: No module named 'crypt'

Vertica.enabled() catches the ImportError and returns False, so the data source silently disappears from the "New Data Source" list and existing Vertica data sources stop working.

This PR bumps the pin to 1.4.0, the latest release on PyPI. vertica-python stopped depending on crypt in 1.3.0 (vertica/vertica-python#485, "deprecate crypt package"); since then the bundled pure-Python implementation is used on every platform, so the legacy CRYPT_PASSWORD auth method keeps working too (unlike the v1.1.2/v1.1.3 git tags mentioned in the issue, which are not published on PyPI and only fall back to cryptography.hashes).

Nothing else in the runner needs to change:

  • 1.4.0 has the same runtime dependencies as 1.1.1 (python-dateutil, six), both already locked, so the uv.lock diff is limited to the vertica-python entry.
  • cursor.description[i][1] is still the data type OID (Column.type_code = col['data_type_oid']), and none of the OIDs used by types_map changed between the two versions (1.4.0 only adds new ROW/ARRAY/MAP/SET types).
  • connection_timeout is still a supported connect() option, and extra options such as read_timeout are still accepted.

uv lock also refreshed the project version recorded in uv.lock (26.7.0.dev026.9.0.dev0), which had not been regenerated since the version bump in pyproject.toml.

How is this tested?

  • Manually

  • In a clean Python 3.13.14 virtualenv, vertica-python==1.1.1 fails to import with the ModuleNotFoundError above, while vertica-python==1.4.0 imports fine.

  • Built the image with the CI settings (docker compose build --build-arg install_groups="main,all_ds,dev" --build-arg skip_frontend_build=true using .ci/compose.ci.yaml) and ran manage ds list_types: Vertica is now listed.

  • Ran the backend test suite in that image (docker compose run --rm redash tests tests/): 932 passed, 1 skipped.

Related Tickets & Documents

#7801

Mobile & Desktop Screenshots/Recordings (if there are UI changes)

N/A

🤖 Generated with Claude Code

Review in cubic

vertica-python 1.1.1 unconditionally imports the standard-library `crypt`
module on non-Windows platforms. Python 3.13 removed `crypt` (PEP 594), so
`import vertica_python` raises ModuleNotFoundError, `Vertica.enabled()`
returns False and the data source silently disappears from Redash.

vertica-python dropped the `crypt` dependency in 1.3.0 (vertica/vertica-python#485)
and 1.4.0 is the latest release on PyPI. It keeps the same dependencies
(python-dateutil, six) and the same data type OIDs used by `types_map`.

Fixes getredash#7801

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Sep 10, 2026

Copy link
Copy Markdown

Greptile Summary

Updates vertica-python from 1.1.1 to 1.4.0 so the Vertica data source can load under Python 3.13.

  • Synchronizes the dependency declaration and resolved package artifacts.
  • Refreshes the project version recorded in uv.lock from 26.7.0.dev0 to 26.9.0.dev0.

Confidence Score: 5/5

The PR appears safe to merge, with the updated driver remaining compatible with the repository’s Vertica connector and Python runtime.

The manifest and lockfile consistently select vertica-python 1.4.0, its dependency set remains unchanged, and no concrete changed-code regression or security issue was identified.

Important Files Changed

Filename Overview
pyproject.toml Pins the Vertica driver to 1.4.0, restoring compatibility with the repository’s Python 3.13 runtime.
uv.lock Consistently updates the Vertica package version, hashes, and project metadata without changing its dependency set.

Reviews (1): Last reviewed commit: "Bump vertica-python to 1.4.0 to restore ..." | Re-trigger Greptile

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No issues found across 2 files

Re-trigger cubic

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.

Vertica data source broken on Python 3.13 — crypt module removed

1 participant