Skip to content

Commit

Permalink
Fixed yaml optional import error (#38)
Browse files Browse the repository at this point in the history
This PR really makes the `yaml` import optional.
  • Loading branch information
nfx authored Feb 1, 2024
1 parent 680a9bd commit 96c34f9
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions src/databricks/labs/blueprint/installation.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
from typing import Any, BinaryIO, TypeVar, get_args, get_type_hints

import databricks.sdk.core
import yaml # pylint: disable=wrong-import-order
from databricks.sdk import WorkspaceClient
from databricks.sdk.errors import NotFound
from databricks.sdk.mixins import workspace
Expand Down Expand Up @@ -607,16 +606,23 @@ def _dump_json(as_dict: Json, _: type) -> bytes:
@staticmethod
def _dump_yaml(raw: Json, _: type) -> bytes:
try:
return yaml.dump(raw).encode("utf8")
from yaml import dump # pylint: disable=import-outside-toplevel

return dump(raw).encode("utf8")
except ImportError as err:
raise SyntaxError("PyYAML is not installed. Fix: pip install databricks-labs-blueprint[yaml]") from err

@staticmethod
def _load_yaml(raw: BinaryIO) -> Json:
try:
from yaml import ( # pylint: disable=import-outside-toplevel
YAMLError,
safe_load,
)

try:
return yaml.safe_load(raw)
except yaml.YAMLError as err:
return safe_load(raw)
except YAMLError as err:
raise JSONDecodeError(str(err), "<yaml>", 0) from err
except ImportError as err:
raise SyntaxError("PyYAML is not installed. Fix: pip install databricks-labs-blueprint[yaml]") from err
Expand Down

0 comments on commit 96c34f9

Please sign in to comment.