Skip to content

Commit

Permalink
nits
Browse files Browse the repository at this point in the history
  • Loading branch information
ChenyuLInx committed May 3, 2024
1 parent 29b8359 commit 4dc17f2
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .changes/unreleased/Under the Hood-20240502-154430.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Under the Hood
body: Clear error message for Private package in dbt-core
time: 2024-05-02T15:44:30.713097-07:00
custom:
Author: ChenyuLInx
Issue: "10083"
12 changes: 11 additions & 1 deletion core/dbt/contracts/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,16 @@ def get_revisions(self) -> List[str]:
return [str(self.revision)]


@dataclass
class PrivatePackage(Package):
private: str
provider: Optional[str] = None
revision: Optional[RawVersion] = None
warn_unpinned: Optional[bool] = field(default=None, metadata={"alias": "warn-unpinned"})
subdirectory: Optional[str] = None
unrendered: Dict[str, Any] = field(default_factory=dict)


@dataclass
class RegistryPackage(Package):
package: str
Expand All @@ -92,7 +102,7 @@ def get_versions(self) -> List[str]:
return [str(self.version)]


PackageSpec = Union[LocalPackage, TarballPackage, GitPackage, RegistryPackage]
PackageSpec = Union[LocalPackage, TarballPackage, GitPackage, RegistryPackage, PrivatePackage]


@dataclass
Expand Down
5 changes: 5 additions & 0 deletions core/dbt/deps/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
GitPackage,
LocalPackage,
PackageSpec,
PrivatePackage,
RegistryPackage,
TarballPackage,
)
Expand Down Expand Up @@ -74,6 +75,10 @@ def update_from(self, src: List[PackageSpec]) -> None:
pkg = TarballUnpinnedPackage.from_contract(contract)
elif isinstance(contract, GitPackage):
pkg = GitUnpinnedPackage.from_contract(contract)
elif isinstance(contract, PrivatePackage):
raise DbtInternalError(
f'Cannot resolve private package {contract.private} because git provider integration is missing. Please use a "git" package instead.'
)
elif isinstance(contract, RegistryPackage):
pkg = RegistryUnpinnedPackage.from_contract(contract)
else:
Expand Down
3 changes: 2 additions & 1 deletion tests/functional/configs/test_custom_node_colors_configs.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import pytest

from dbt.exceptions import ConfigUpdateError
from dbt.tests.util import get_manifest, run_dbt
from dbt_common.dataclass_schema import ValidationError

Expand Down Expand Up @@ -304,7 +305,7 @@ def test__invalid_color_config_block(
self,
project,
):
with pytest.raises(ValidationError):
with pytest.raises((ValidationError, ConfigUpdateError)):
run_dbt(["compile"])


Expand Down
13 changes: 13 additions & 0 deletions tests/unit/test_deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,19 @@ def test_dependency_resolution(self):
self.assertEqual(resolved[1].name, "dbt-labs-test/b")
self.assertEqual(resolved[1].version, "0.2.1")

def test_private_package_raise_error(self):
package_config = PackageConfig.from_dict(
{
"packages": [
{"private": "dbt-labs-test/a", "subdirectory": "foo-bar"},
],
}
)
with self.assertRaisesRegex(
dbt.exceptions.DbtInternalError, "Cannot resolve private package"
):
resolve_packages(package_config.packages, mock.MagicMock(project_name="test"), {})

def test_dependency_resolution_allow_prerelease(self):
package_config = PackageConfig.from_dict(
{
Expand Down

0 comments on commit 4dc17f2

Please sign in to comment.