diff --git a/Makefile b/Makefile index 8ffb566d..3867de69 100644 --- a/Makefile +++ b/Makefile @@ -90,7 +90,7 @@ clean: ## Clean .venv, dist, build @echo "" @echo "${YELLOW}Current python:${NORMAL}" @make helper-line - @python --version + @python3 --version @make docs-clean @@ -106,13 +106,13 @@ install-e: ## Install project as editable. @echo "" @echo "${YELLOW}Install project as editable${NORMAL}" @make helper-line - python -m pip install -e . + python3 -m pip install -e . install-dev: ## Install dev dependencies. @echo "" @echo "${YELLOW}Install Dev dependencies.${NORMAL}" @make helper-line - python -m pip install -e ".[dev]" + python3 -m pip install -e ".[dev]" post-install-info: ## Just some post installation info. @echo "" @@ -139,20 +139,20 @@ lint: ## Run the lint and checks @echo "" @echo "${YELLOW}Linting code:${NORMAL}" @make helper-line - python -m prospector --profile prospector.yaml + python3 -m prospector --profile prospector.yaml @make check check: ## Run black checks @echo "" @echo "${YELLOW}Check code with black:${NORMAL}" @make helper-line - python -m black --check . + python3 -m black --check . fix: ## fix the code with black formatter. @echo "" @echo "${YELLOW}Fixing code with black:${NORMAL}" @make helper-line - python -m black . + python3 -m black . ############################################################################## @@ -160,7 +160,7 @@ test: ## Run the tests. (option): file=tests/path/to/file.py @echo "" @echo "${YELLOW}Running tests:${NORMAL}" @make helper-line - python -m pytest -vv --cov dbx $(file) -n auto \ + python3 -m pytest -vv --cov dbx $(file) -n auto \ --cov-report=xml \ --cov-report=term-missing:skip-covered @@ -168,7 +168,7 @@ test-with-html-report: ## Run all tests with html reporter. @echo "" @echo "${YELLOW}Testing with html report:${NORMAL}" @make helper-line - python -m pytest --cov dbx -n auto --cov-report html -s + python3 -m pytest --cov dbx -n auto --cov-report html -s ############################################################################## diff --git a/pyproject.toml b/pyproject.toml index 27d11503..9b7d8c2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ dependencies = [ "Jinja2>=2.11.2", "mlflow-skinny>=2.0.0,<3.0.0", "pathspec>=0.9.0", - "pydantic>=1.10.8,<2.0.0", + "pydantic>=2.0.0", "pyyaml>=6.0", "requests>=2.30.1,<3.0.0", "rich>=12.6.0,<=13.0.0", diff --git a/src/dbx/api/adjuster/adjuster.py b/src/dbx/api/adjuster/adjuster.py index 4ae4301c..d0cf78d4 100644 --- a/src/dbx/api/adjuster/adjuster.py +++ b/src/dbx/api/adjuster/adjuster.py @@ -1,7 +1,7 @@ from typing import Any, List, Optional, Union from databricks_cli.sdk import ApiClient -from pydantic import BaseModel +from pydantic.v1 import BaseModel from dbx.api.adjuster.mixins.existing_cluster import ExistingClusterAdjuster from dbx.api.adjuster.mixins.file_reference import FileReferenceAdjuster diff --git a/src/dbx/api/adjuster/mixins/base.py b/src/dbx/api/adjuster/mixins/base.py index c02de068..d7a965e5 100644 --- a/src/dbx/api/adjuster/mixins/base.py +++ b/src/dbx/api/adjuster/mixins/base.py @@ -1,7 +1,7 @@ from abc import ABC from databricks_cli.sdk import ApiClient -from pydantic import BaseModel +from pydantic.v1 import BaseModel from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/api/adjuster/mixins/service_principal.py b/src/dbx/api/adjuster/mixins/service_principal.py index 1ff7cda6..78352055 100644 --- a/src/dbx/api/adjuster/mixins/service_principal.py +++ b/src/dbx/api/adjuster/mixins/service_principal.py @@ -1,7 +1,7 @@ import functools from typing import Any, List -from pydantic import Field +from pydantic.v1 import Field from dbx.api.adjuster.mixins.base import ApiClientMixin, ElementSetterMixin from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/api/config_reader.py b/src/dbx/api/config_reader.py index 344740a8..e4dc1815 100644 --- a/src/dbx/api/config_reader.py +++ b/src/dbx/api/config_reader.py @@ -6,7 +6,7 @@ import jinja2 import yaml -from pydantic import BaseModel +from pydantic.v1 import BaseModel import dbx.api.jinja as dbx_jinja from dbx.api._module_loader import load_module_from_source diff --git a/src/dbx/api/launch/pipeline_models.py b/src/dbx/api/launch/pipeline_models.py index 64217882..7f4e2c69 100644 --- a/src/dbx/api/launch/pipeline_models.py +++ b/src/dbx/api/launch/pipeline_models.py @@ -1,7 +1,7 @@ from enum import Enum from typing import List, Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel class UpdateStatus(str, Enum): diff --git a/src/dbx/api/launch/runners/base.py b/src/dbx/api/launch/runners/base.py index a65f5517..739d1f20 100644 --- a/src/dbx/api/launch/runners/base.py +++ b/src/dbx/api/launch/runners/base.py @@ -1,6 +1,6 @@ from typing import Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel class RunData(BaseModel): diff --git a/src/dbx/api/launch/runners/pipeline.py b/src/dbx/api/launch/runners/pipeline.py index afb58f92..c5ead8ad 100644 --- a/src/dbx/api/launch/runners/pipeline.py +++ b/src/dbx/api/launch/runners/pipeline.py @@ -4,7 +4,7 @@ from typing import List, Optional, Tuple from databricks_cli.sdk import ApiClient -from pydantic import BaseModel +from pydantic.v1 import BaseModel from rich.console import Console from dbx.api.launch.pipeline_models import PipelineDetails, PipelineGlobalState diff --git a/src/dbx/models/build.py b/src/dbx/models/build.py index 4b14bbf2..cb7924ce 100644 --- a/src/dbx/models/build.py +++ b/src/dbx/models/build.py @@ -3,7 +3,7 @@ from enum import Enum from typing import List, Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel from rich.console import Console from dbx.api.build import cleanup_dist, execute_shell_command diff --git a/src/dbx/models/cli/destroyer.py b/src/dbx/models/cli/destroyer.py index 6da7f030..f2a20c7f 100644 --- a/src/dbx/models/cli/destroyer.py +++ b/src/dbx/models/cli/destroyer.py @@ -1,7 +1,7 @@ from enum import Enum from typing import List, Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel from dbx.models.deployment import AnyWorkflow, EnvironmentDeploymentInfo diff --git a/src/dbx/models/cli/execute.py b/src/dbx/models/cli/execute.py index 3c77c701..b894fe73 100644 --- a/src/dbx/models/cli/execute.py +++ b/src/dbx/models/cli/execute.py @@ -2,7 +2,7 @@ import json -from pydantic import root_validator +from pydantic.v1 import root_validator from dbx.models.validators import at_least_one_of, mutually_exclusive from dbx.models.workflow.common.parameters import NamedParametersMixin, ParametersMixin diff --git a/src/dbx/models/deployment.py b/src/dbx/models/deployment.py index f0664989..a34bdfab 100644 --- a/src/dbx/models/deployment.py +++ b/src/dbx/models/deployment.py @@ -3,7 +3,7 @@ import collections from typing import Any, Dict, List, Optional, Union -from pydantic import BaseModel, Field, validator +from pydantic.v1 import BaseModel, Field, validator from rich.markup import escape from typing_extensions import Annotated diff --git a/src/dbx/models/files/context.py b/src/dbx/models/files/context.py index fea4ba47..252a2fb2 100644 --- a/src/dbx/models/files/context.py +++ b/src/dbx/models/files/context.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic.v1 import BaseModel class ContextInfo(BaseModel): diff --git a/src/dbx/models/files/project.py b/src/dbx/models/files/project.py index 26649f4a..bab0cdb1 100644 --- a/src/dbx/models/files/project.py +++ b/src/dbx/models/files/project.py @@ -3,7 +3,7 @@ from enum import Enum from typing import Dict, Optional, Union -from pydantic import BaseModel +from pydantic.v1 import BaseModel from dbx.constants import PROJECT_INFO_FILE_PATH from dbx.utils import dbx_echo diff --git a/src/dbx/models/workflow/common/access_control.py b/src/dbx/models/workflow/common/access_control.py index c4abc873..387908b8 100644 --- a/src/dbx/models/workflow/common/access_control.py +++ b/src/dbx/models/workflow/common/access_control.py @@ -1,7 +1,7 @@ from enum import Enum from typing import Any, Dict, List, Optional -from pydantic import root_validator, validator +from pydantic.v1 import root_validator, validator from dbx.models.validators import at_least_one_of from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/models/workflow/common/deployment_config.py b/src/dbx/models/workflow/common/deployment_config.py index 9d18dab3..99043495 100644 --- a/src/dbx/models/workflow/common/deployment_config.py +++ b/src/dbx/models/workflow/common/deployment_config.py @@ -1,6 +1,6 @@ from typing import Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel class DbxDeploymentConfig(BaseModel): diff --git a/src/dbx/models/workflow/common/flexible.py b/src/dbx/models/workflow/common/flexible.py index e7a91bc9..af8b9275 100644 --- a/src/dbx/models/workflow/common/flexible.py +++ b/src/dbx/models/workflow/common/flexible.py @@ -1,6 +1,6 @@ from typing import List -from pydantic import BaseModel, Extra +from pydantic.v1 import BaseModel, Extra from dbx.utils import dbx_echo diff --git a/src/dbx/models/workflow/common/libraries.py b/src/dbx/models/workflow/common/libraries.py index a78bb368..c582550c 100644 --- a/src/dbx/models/workflow/common/libraries.py +++ b/src/dbx/models/workflow/common/libraries.py @@ -1,6 +1,6 @@ from typing import List, Optional -from pydantic import root_validator +from pydantic.v1 import root_validator from dbx.models.validators import at_least_one_of, mutually_exclusive from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/models/workflow/common/new_cluster.py b/src/dbx/models/workflow/common/new_cluster.py index 942eeaa1..1fb3336e 100644 --- a/src/dbx/models/workflow/common/new_cluster.py +++ b/src/dbx/models/workflow/common/new_cluster.py @@ -1,6 +1,6 @@ from typing import Optional -from pydantic import root_validator, validator +from pydantic.v1 import root_validator, validator from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/models/workflow/common/parameters.py b/src/dbx/models/workflow/common/parameters.py index 8219be88..9e71322d 100644 --- a/src/dbx/models/workflow/common/parameters.py +++ b/src/dbx/models/workflow/common/parameters.py @@ -2,7 +2,7 @@ from typing import Any, Dict, List, Optional -from pydantic import BaseModel +from pydantic.v1 import BaseModel ParamPair = Optional[Dict[str, str]] StringArray = Optional[List[str]] diff --git a/src/dbx/models/workflow/common/pipeline.py b/src/dbx/models/workflow/common/pipeline.py index b59b0358..297972d4 100644 --- a/src/dbx/models/workflow/common/pipeline.py +++ b/src/dbx/models/workflow/common/pipeline.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Literal, Optional -from pydantic import validator +from pydantic.v1 import validator from dbx.models.workflow.common.access_control import AccessControlMixin from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/models/workflow/common/task.py b/src/dbx/models/workflow/common/task.py index ffadbbff..59c667c6 100644 --- a/src/dbx/models/workflow/common/task.py +++ b/src/dbx/models/workflow/common/task.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import Optional -from pydantic import root_validator, validator +from pydantic.v1 import root_validator, validator from dbx.constants import TASKS_SUPPORTED_IN_EXECUTE from dbx.models.cli.execute import ExecuteParametersPayload diff --git a/src/dbx/models/workflow/v2dot0/parameters.py b/src/dbx/models/workflow/v2dot0/parameters.py index 5322173c..2247bbbc 100644 --- a/src/dbx/models/workflow/v2dot0/parameters.py +++ b/src/dbx/models/workflow/v2dot0/parameters.py @@ -1,4 +1,4 @@ -from pydantic import root_validator +from pydantic.v1 import root_validator from dbx.models.validators import mutually_exclusive from dbx.models.workflow.common.parameters import BaseParametersMixin, ParametersMixin, StandardBasePayload diff --git a/src/dbx/models/workflow/v2dot0/workflow.py b/src/dbx/models/workflow/v2dot0/workflow.py index e15adb60..69f53281 100644 --- a/src/dbx/models/workflow/v2dot0/workflow.py +++ b/src/dbx/models/workflow/v2dot0/workflow.py @@ -1,6 +1,6 @@ from typing import List, Literal, Optional, Union -from pydantic import root_validator, validator +from pydantic.v1 import root_validator, validator from dbx.models.workflow.common.access_control import AccessControlMixin from dbx.models.workflow.common.deployment_config import DbxDeploymentConfig diff --git a/src/dbx/models/workflow/v2dot1/job_cluster.py b/src/dbx/models/workflow/v2dot1/job_cluster.py index 3da8deb4..40f387b0 100644 --- a/src/dbx/models/workflow/v2dot1/job_cluster.py +++ b/src/dbx/models/workflow/v2dot1/job_cluster.py @@ -1,7 +1,7 @@ import collections from typing import Any, Dict, List, Optional -from pydantic import root_validator +from pydantic.v1 import root_validator from dbx.models.workflow.common.flexible import FlexibleModel from dbx.models.workflow.common.new_cluster import NewCluster diff --git a/src/dbx/models/workflow/v2dot1/parameters.py b/src/dbx/models/workflow/v2dot1/parameters.py index e4f91f48..cee0489e 100644 --- a/src/dbx/models/workflow/v2dot1/parameters.py +++ b/src/dbx/models/workflow/v2dot1/parameters.py @@ -3,7 +3,7 @@ import json from typing import List, Optional -from pydantic import BaseModel, validator +from pydantic.v1 import BaseModel, validator from dbx.models.validators import check_dbt_commands from dbx.models.workflow.common.parameters import ( diff --git a/src/dbx/models/workflow/v2dot1/task.py b/src/dbx/models/workflow/v2dot1/task.py index e063bb49..9d8a6aea 100644 --- a/src/dbx/models/workflow/v2dot1/task.py +++ b/src/dbx/models/workflow/v2dot1/task.py @@ -1,8 +1,8 @@ from enum import Enum from typing import Dict, List, Optional -from pydantic import BaseModel, root_validator, validator -from pydantic.fields import Field +from pydantic.v1 import BaseModel, root_validator, validator +from pydantic.v1.fields import Field from dbx.models.validators import at_least_one_of, check_dbt_commands, mutually_exclusive from dbx.models.workflow.common.flexible import FlexibleModel diff --git a/src/dbx/models/workflow/v2dot1/workflow.py b/src/dbx/models/workflow/v2dot1/workflow.py index 8d6c7ec6..e2a51bef 100644 --- a/src/dbx/models/workflow/v2dot1/workflow.py +++ b/src/dbx/models/workflow/v2dot1/workflow.py @@ -1,7 +1,7 @@ import collections from typing import Any, Dict, List, Literal, Optional -from pydantic import root_validator, validator +from pydantic.v1 import root_validator, validator from dbx.models.validators import at_least_one_of, mutually_exclusive from dbx.models.workflow.common.access_control import AccessControlMixin diff --git a/tests/unit/commands/test_destroy.py b/tests/unit/commands/test_destroy.py index a3d76bd3..fb19b874 100644 --- a/tests/unit/commands/test_destroy.py +++ b/tests/unit/commands/test_destroy.py @@ -37,7 +37,7 @@ def test_ask_for_confirmation_negative(monkeypatch, base_config): "mode, expected", [ ("all", "All assets are also marked for deletion"), - ("workflows_only", "assets won't be affected"), + ("workflows_only", "assets won't beaffected"), # TODO: for some reason the output removes the last space. Figure out why. ("assets_only", "workflow definitions won't be affected"), ], ) diff --git a/tests/unit/models/test_job_clusters.py b/tests/unit/models/test_job_clusters.py index b3591d00..24eeef41 100644 --- a/tests/unit/models/test_job_clusters.py +++ b/tests/unit/models/test_job_clusters.py @@ -1,5 +1,5 @@ import pytest -from pydantic import ValidationError +from pydantic.v1 import ValidationError from dbx.models.workflow.v2dot1.job_cluster import JobClustersMixin diff --git a/tests/unit/models/test_task.py b/tests/unit/models/test_task.py index 1b28a1f5..d566a67c 100644 --- a/tests/unit/models/test_task.py +++ b/tests/unit/models/test_task.py @@ -1,7 +1,7 @@ from pathlib import Path import pytest -from pydantic import ValidationError +from pydantic.v1 import ValidationError from dbx.models.cli.execute import ExecuteParametersPayload from dbx.models.workflow.common.task import BaseTaskMixin, SparkJarTask, SparkPythonTask, SparkSubmitTask diff --git a/tests/unit/models/test_v2dot1_workflow.py b/tests/unit/models/test_v2dot1_workflow.py index 30a60338..c6df38ad 100644 --- a/tests/unit/models/test_v2dot1_workflow.py +++ b/tests/unit/models/test_v2dot1_workflow.py @@ -1,5 +1,5 @@ import pytest -from pydantic import ValidationError +from pydantic.v1 import ValidationError from dbx.models.workflow.v2dot1.parameters import AssetBasedRunPayload from dbx.models.workflow.v2dot1.workflow import Workflow