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

Downgrade pydantic in dev env #355

Merged
merged 4 commits into from
Oct 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/unreleased/Under the Hood-20241010-164927.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Under the Hood
body: Downgrade Pydantic in dev-env
time: 2024-10-10T16:49:27.844308-05:00
custom:
Author: DevonFulcher
Issue: None
10 changes: 10 additions & 0 deletions dsi_pydantic_shim.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
"""Shim to allow support for both Pydantic 1 and Pydantic 2.

DSI must support both major versions of Pydantic because dbt-core depends on DSI. dbt-core users might be using an
environment with either version, and we can't restrict them to one or the other. Here, we essentially import all
Pydantic objects from version 1. Throughout the repo, we import those objects from this file instead of from Pydantic
directly, meaning that we essentially only use Pydantic 1 in this repo, but without forcing that restriction on dbt
users. The development environment for this repo should be pinned to Pydantic 1 to ensure devs get appropriate type
hints.
"""

from importlib.metadata import version

pydantic_version = version("pydantic")
Expand Down
9 changes: 4 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ readme = "README.md"
requires-python = ">=3.8"
license = "Apache-2.0"
keywords = []
authors = [
{ name = "dbt Labs", email = "[email protected]" },
]
authors = [{ name = "dbt Labs", email = "[email protected]" }]
classifiers = [
"Development Status :: 4 - Beta",
"License :: OSI Approved :: Apache Software License",
Expand Down Expand Up @@ -66,7 +64,8 @@ dependencies = [
"isort>=5.12,<6",
"black>=23.3,<24",
"ruff==0.0.260",
"mypy>=1.3,<2",
"mypy==1.6.1",
"pydantic>=1.10,<2", # The types in this codebase with mypy checker are only compatible with pydantic 1
Copy link
Contributor

Choose a reason for hiding this comment

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

Hmmm I wonder if we should also restrict this in prod? Why only change dev?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is a problem only with mypy and the type annotations. This problem doesn't impact the production release version.

"pytest>=7.3,<8",
"types-Jinja2>=2.11,<3",
"types-jsonschema>=4.17,<5",
Expand All @@ -86,7 +85,7 @@ ignore = [
# Missing docstring in public module -- often docs handled within classes
"D100",
# Missing docstring in public package -- often docs handled within files not __init__.py
"D104"
"D104",
]
# Let ruff autofix these errors.
# F401 - Unused imports.
Expand Down
Loading