beetbox / beetbox/beets

mbpseudo `missing 2 required positional arguments: 'pseudo_release' and 'official_release'`

Open
#6,652 0 comments 0 reactions 0 assignees View on GitHub
mbpseudo
Dominant language
Python
Stars
15.7k
Forks
2.1k
Avg merge
4d 21h
Merged PRs (30d)
31

Description

### Problem

Running this command in verbose (`-vv`) mode:

```sh
$ beet import -L
```

Led to this problem:

```
Traceback (most recent call last):
File "/home/konstantink/.local/bin/beet", line 10, in
sys.exit(main())
~~~~^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/ui/__init__.py", line 1009, in main
_raw_main(args)
~~~~~~~~~^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/ui/__init__.py", line 990, in _raw_main
subcommand.func(lib, suboptions, subargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/ui/commands/import_/__init__.py", line 131, in import_func
import_files(lib, byte_paths, query)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/ui/commands/import_/__init__.py", line 75, in import_files
session.run()
~~~~~~~~~~~^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/importer/session.py", line 237, in run
pl.run_parallel(QUEUE_SIZE)
~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/util/pipeline.py", line 489, in run_parallel
raise exc_info[1].with_traceback(exc_info[2])
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/util/pipeline.py", line 343, in run
out = self._run_in_context(self.coro.send, msg)
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/util/pipeline.py", line 252, in _run_in_context
return self.ctx.run(func, *args)
~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/util/pipeline.py", line 196, in coro
task = func(*args, task)
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/importer/stages.py", line 217, in user_query
_apply_choice(session, task)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/importer/stages.py", line 323, in _apply_choice
task.apply_metadata()
~~~~~~~~~~~~~~~~~~~^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/importer/tasks.py", line 264, in apply_metadata
self.match.apply_metadata()
~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/autotag/hooks.py", line 622, in apply_metadata
for item, data in self.merged_pairs:
^^^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/autotag/hooks.py", line 616, in merged_pairs
(i, ti.merge_with_album(self.info))
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/autotag/hooks.py", line 504, in merge_with_album
album = album_info.raw_data
^^^^^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/python/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/functools.py", line 1025, in __get__
val = self.func(instance)
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/autotag/hooks.py", line 301, in raw_data
data = {**super().raw_data}
^^^^^^^^^^^^^^^^
File "/home/konstantink/.local/share/uv/python/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/functools.py", line 1025, in __get__
val = self.func(instance)
File "/home/konstantink/.local/share/uv/tools/beets/lib/python3.13/site-packages/beets/autotag/hooks.py", line 176, in raw_data
data = self.__class__(**self.copy())
TypeError: PseudoAlbumInfo.__init__() missing 2 required positional arguments: 'pseudo_release' and 'official_release'
```

Here's a link to the music files that trigger the bug (if relevant):
https://musicbrainz.org/release/a05ac5b2-4962-46a0-9f83-688fb80f35c5

### Setup

* OS: Fedora Linux 44 (Workstation Edition)
* Python version: 3.13.13
* beets version: 2.11.0
* Turning off plugins made problem go away (yes/no): yes

My configuration (output of `beet config`) is:

```yaml
# relevant part
plugins:
- mbpseudo
...
```

Contributor guide

Open the contributing guide

Research direction

Start in beets/autotag/hooks.py around PseudoAlbumInfo.__init__ and raw_data, then trace how the mbpseudo plugin supplies album data during `beet import -L`. Reproduce with the linked MusicBrainz release and the shown plugin configuration; done means the import no longer raises the missing-arguments TypeError, ideally with coverage for this case.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.