ImportError: cannot import name 'YamlModel' from 'pydantic_yaml'
Metadata
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. | |
| #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. | |
| #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. |