← Back to issue list

ImportError: cannot import name 'YamlModel' from 'pydantic_yaml'

View original Github issue

Metadata

Project
craft-parts
Number
#158
Type
issue
State
closed
Author
lourot
Labels
—
Created
Updated
Closed

Current evaluation

Fixed by merged PR #159, which pinned pydantic-yaml 0.4.2 in setup.py; implementation commit 0226365f, merge commit 9b90997e.

Resolution: closed resolved

Reason: PR #159 was merged as 9b90997e and pinned pydantic-yaml to compatible version 0.4.2. The closing maintainer comment explicitly identified PR #159 as the resolution.

Evaluated by: mr-cal-bot

No scores available.

Issue body

I believe this is because `setup.py` should pin `pydantic-yaml==0.4.2`, as this is also done in `requirements.txt` and `requirements-dev.txt`. Otherwise we are getting pydantic-yaml 0.5.1, for which the way of importing has changed. ``` build run-test: commands[0] | charmcraft build Traceback (most recent call last): File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/bin/charmcraft", line 5, in <module> from charmcraft.main import main File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/charmcraft/main.py", line 26, in <module> from charmcraft import config, __version__ File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/charmcraft/config.py", line 81, in <module> from charmcraft.parts import validate_part File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/charmcraft/parts.py", line 26, in <module> from craft_parts import LifecycleManager, Step, plugins File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/__init__.py", line 25, in <module> from .lifecycle_manager import LifecycleManager # noqa: F401 File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/lifecycle_manager.py", line 27, in <module> from craft_parts import errors, executor, packages, plugins, sequencer File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/executor/__init__.py", line 19, in <module> from .executor import ExecutionContext, Executor # noqa: F401 File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/executor/executor.py", line 35, in <module> from .part_handler import PartHandler File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/executor/part_handler.py", line 34, in <module> from craft_parts.state_manager import MigrationState, StepState, states File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/state_manager/__init__.py", line 19, in <module> from .state_manager import StateManager # noqa: F401 File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/state_manager/state_manager.py", line 32, in <module> from .states import StepState, get_step_state_path, load_step_state File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/state_manager/states.py", line 29, in <module> from .build_state import BuildState File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/state_manager/build_state.py", line 23, in <module> from .step_state import StepState, validate_hex_string File "/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/craft_parts/state_manager/step_state.py", line 23, in <module> from pydantic_yaml import YamlModel # type: ignore ImportError: cannot import name 'YamlModel' from 'pydantic_yaml' (/home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/lib/python3.9/site-packages/pydantic_yaml/__init__.py) ERROR: InvocationError for command /home/lourot/Documents/git/canonical/charm-nova-compute-nvidia-vgpu/.tox/build/bin/charmcraft build (exited with code 1) ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Fixed by merged PR #159, which pinned pydantic-yaml 0.4.2 in setup.py; implementation commit 0226365f, merge commit 9b90997e.
stealth/space-bunny-alpha — closed resolved Fixed by merging PR #159, which pinned pydantic-yaml to 0.4.2 for compatibility (implementation commit 0226365f; merge commit 9b90997e).
qwen/qwen3.6-35b-a3b — — Resolved by pinning pydantic-yaml to version 0.4.2 in setup.py to prevent an ImportError from API changes in 0.5.1. Fix merged in PR #159.
qwen/qwen3.6-35b-a3b — — Resolved by pinning pydantic-yaml to 0.4.2 in setup.py to match requirements. The fix was merged and closed via PR #159.
qwen/qwen3.6-35b-a3b — — Fixed by pinning pydantic-yaml to 0.4.2 in setup.py, resolving the ImportError caused by breaking API changes in version 0.5.1. Closed via PR #159.
qwen3.6-35b-a3b-mtp-q6 — — Resolved by pinning pydantic-yaml to version 0.4.2 in setup.py, preventing the ImportError caused by breaking changes in 0.5.1. The fix was merged in PR #159.

Update history

No update history recorded yet.

Related work

  • Likely Fixed By: canonical/craft-parts#159 (confidence 100%)

    Merged dependency pin in commit 0226365f, merge commit 9b90997e.

Related issues

Issue Project State Summary Similarity
#841 Incorrect extra set on pydantic-yaml craft-parts closed Fixed by merged PR #811 (commit 1debce16), which removed the unnecessary pydantic-yaml dependency and its nonexistent pyyaml extra.
72%
#811 build(deps): drop unnecessary pydantic-yaml craft-parts merged Merged #811 in commit 1debce16, removing pydantic-yaml because Pydantic 2 models are serialized with model_dump() and PyYAML directly.
72%
#499 Update to pydantic-yaml >=1.0.0 craft-parts closed The pydantic-yaml 1.x migration was bypassed when PR #811 removed the unnecessary dependency in commit 1debce16, after PR #498 had temporarily frozen it below 1.0.
71%