[GH-ISSUE #77] [Bug Report] Query extChildren() Returning List of Lists #65

Closed
opened 2026-02-27 04:57:20 +03:00 by kerem · 2 comments
Owner

Originally created by @DamianRyse on GitHub (Sep 14, 2025).
Original GitHub issue: https://github.com/Googolplexed0/zotify/issues/77

Originally assigned to: @Googolplexed0 on GitHub.

Zotify Version
v0.10.12

Bug Description
Zotify crashes when an album has completely downloaded with the following error message:

###   ERROR:  UNEXPECTED ERROR DURING DOWNLOADS   ###
###   ATTEMPTING TO CLEAN UP   ###

###   ERROR:  CLEAN UP COMPLETE   ###
###   LOGGING ERROR AND TRACEBACK   ###
Traceback (most recent call last):
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 44, in perform_query
    Query(Zotify.DATETIME_LAUNCH).request(urls).execute()
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1654, in execute
    self.download()
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1648, in download
    raise interrupt
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1619, in download
    super().download(pbar_stack=None)
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1144, in download
    if self.check_skippable():
       ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1140, in check_skippable
    self._skippable = all([child.check_skippable() for child in self.extChildren()])
                           ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'check_skippable'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/zotify/bin/zotify", line 7, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/__main__.py", line 134, in main
    args.func(args, modes)
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 81, in client
    perform_query(args)
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 69, in perform_query
    Zotify.cleanup()
  File "/opt/zotify/lib64/python3.12/site-packages/zotify/config.py", line 782, in cleanup
    for tempfile in dir.glob("**.tmp"):
                    ^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/pathlib.py", line 1093, in glob
    selector = _make_selector(tuple(pattern_parts), self._flavour, case_sensitive)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/pathlib.py", line 100, in _make_selector
    raise ValueError("Invalid pattern: '**' can only be an entire path component")
ValueError: Invalid pattern: '**' can only be an entire path component
Originally created by @DamianRyse on GitHub (Sep 14, 2025). Original GitHub issue: https://github.com/Googolplexed0/zotify/issues/77 Originally assigned to: @Googolplexed0 on GitHub. **Zotify Version** v0.10.12 **Bug Description** Zotify crashes when an album has completely downloaded with the following error message: ``` ### ERROR: UNEXPECTED ERROR DURING DOWNLOADS ### ### ATTEMPTING TO CLEAN UP ### ### ERROR: CLEAN UP COMPLETE ### ### LOGGING ERROR AND TRACEBACK ### Traceback (most recent call last): File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 44, in perform_query Query(Zotify.DATETIME_LAUNCH).request(urls).execute() File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1654, in execute self.download() File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1648, in download raise interrupt File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1619, in download super().download(pbar_stack=None) File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1144, in download if self.check_skippable(): ^^^^^^^^^^^^^^^^^^^^^^ File "/opt/zotify/lib64/python3.12/site-packages/zotify/api.py", line 1140, in check_skippable self._skippable = all([child.check_skippable() for child in self.extChildren()]) ^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'list' object has no attribute 'check_skippable' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/zotify/bin/zotify", line 7, in <module> sys.exit(main()) ^^^^^^ File "/opt/zotify/lib64/python3.12/site-packages/zotify/__main__.py", line 134, in main args.func(args, modes) File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 81, in client perform_query(args) File "/opt/zotify/lib64/python3.12/site-packages/zotify/app.py", line 69, in perform_query Zotify.cleanup() File "/opt/zotify/lib64/python3.12/site-packages/zotify/config.py", line 782, in cleanup for tempfile in dir.glob("**.tmp"): ^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.12/pathlib.py", line 1093, in glob selector = _make_selector(tuple(pattern_parts), self._flavour, case_sensitive) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.12/pathlib.py", line 100, in _make_selector raise ValueError("Invalid pattern: '**' can only be an entire path component") ValueError: Invalid pattern: '**' can only be an entire path component ```
kerem 2026-02-27 04:57:20 +03:00
Author
Owner

@Googolplexed0 commented on GitHub (Sep 16, 2025):

raise ValueError("Invalid pattern: '' can only be an entire path component")
ValueError: Invalid pattern: '
' can only be an entire path component

Secondary error fixed with 2c2bb8dd0b.

self._skippable = all([child.check_skippable() for child in self.extChildren()])
^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'check_skippable'

The primary error occured because your Query's self.extChildren() returned a list of lists instead of a list of Content/Containers... this shouldn't happen and I can't seem to recreate it. Are you downloading multiple things? What command are you running?

Please try updating to v0.10.13, running with --debug, and attaching the resulting DEBUG.log file here.

<!-- gh-comment-id:3294719404 --> @Googolplexed0 commented on GitHub (Sep 16, 2025): > raise ValueError("Invalid pattern: '**' can only be an entire path component") > ValueError: Invalid pattern: '**' can only be an entire path component Secondary error fixed with 2c2bb8dd0b1b576b99d6a60003c7c7c4fea4d4d9. > self._skippable = all([child.check_skippable() for child in self.extChildren()]) > ^^^^^^^^^^^^^^^^^^^^^ > AttributeError: 'list' object has no attribute 'check_skippable' The primary error occured because your Query's `self.extChildren()` returned a list of lists instead of a list of Content/Containers... this shouldn't happen and I can't seem to recreate it. Are you downloading multiple things? What command are you running? Please try updating to v0.10.13, running with `--debug`, and attaching the resulting DEBUG.log file here.
Author
Owner

@Googolplexed0 commented on GitHub (Oct 1, 2025):

Primary error should be fixed with 75260bba36

<!-- gh-comment-id:3354389919 --> @Googolplexed0 commented on GitHub (Oct 1, 2025): Primary error should be fixed with 75260bba363a74e323626a4da6ac559347808df6
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/zotify#65
No description provided.