ytdl-sub 2025.12.31.post2__tar.gz → 2025.12.31.post3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/PKG-INFO +1 -1
  2. ytdl_sub-2025.12.31.post3/src/ytdl_sub/__init__.py +1 -0
  3. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/script.py +16 -0
  4. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/resolvable.py +8 -0
  5. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/variable_dependency.py +14 -3
  6. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/PKG-INFO +1 -1
  7. ytdl_sub-2025.12.31.post2/src/ytdl_sub/__init__.py +0 -1
  8. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/LICENSE +0 -0
  9. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/README.md +0 -0
  10. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/pyproject.toml +0 -0
  11. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/setup.cfg +0 -0
  12. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/__init__.py +0 -0
  13. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/entrypoint.py +0 -0
  14. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/output_summary.py +0 -0
  15. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
  16. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
  17. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/cli_to_sub.py +0 -0
  18. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/dl.py +0 -0
  19. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/main.py +0 -0
  20. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/__init__.py +0 -0
  21. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/config_file.py +0 -0
  22. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/config_validator.py +0 -0
  23. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/defaults.py +0 -0
  24. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/overrides.py +0 -0
  25. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/__init__.py +0 -0
  26. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin.py +0 -0
  27. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
  28. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
  29. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
  30. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/preset.py +0 -0
  31. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/preset_options.py +0 -0
  32. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/__init__.py +0 -0
  33. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/options.py +0 -0
  34. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
  35. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/__init__.py +0 -0
  36. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
  37. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
  38. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
  39. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
  40. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
  41. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/validators.py +0 -0
  42. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
  43. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
  44. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/__init__.py +0 -0
  45. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/base_entry.py +0 -0
  46. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/entry.py +0 -0
  47. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/entry_parent.py +0 -0
  48. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/__init__.py +0 -0
  49. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
  50. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
  51. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
  52. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/variable_types.py +0 -0
  53. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/variables/__init__.py +0 -0
  54. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/variables/override_variables.py +0 -0
  55. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/main.py +0 -0
  56. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/__init__.py +0 -0
  57. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/audio_extract.py +0 -0
  58. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/chapters.py +0 -0
  59. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/date_range.py +0 -0
  60. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
  61. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/file_convert.py +0 -0
  62. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
  63. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_include.py +0 -0
  64. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/format.py +0 -0
  65. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
  66. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/view.py +0 -0
  67. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/match_filters.py +0 -0
  68. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/music_tags.py +0 -0
  69. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
  70. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
  71. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
  72. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
  73. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
  74. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/subtitles.py +0 -0
  75. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
  76. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/video_tags.py +0 -0
  77. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
  78. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
  79. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +0 -0
  80. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
  81. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
  82. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
  83. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
  84. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
  85. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
  86. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
  87. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
  88. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
  89. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
  90. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
  91. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
  92. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
  93. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
  94. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
  95. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
  96. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
  97. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
  98. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
  99. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
  100. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
  101. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
  102. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
  103. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
  104. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/__init__.py +0 -0
  105. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/__init__.py +0 -0
  106. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/array_functions.py +0 -0
  107. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
  108. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
  109. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/date_functions.py +0 -0
  110. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/error_functions.py +0 -0
  111. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/json_functions.py +0 -0
  112. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/map_functions.py +0 -0
  113. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
  114. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/print_functions.py +0 -0
  115. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
  116. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/string_functions.py +0 -0
  117. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/parser.py +0 -0
  118. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/script_output.py +0 -0
  119. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/__init__.py +0 -0
  120. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/array.py +0 -0
  121. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/function.py +0 -0
  122. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/map.py +0 -0
  123. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
  124. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/variable.py +0 -0
  125. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/__init__.py +0 -0
  126. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
  127. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/exceptions.py +0 -0
  128. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/name_validation.py +0 -0
  129. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/type_checking.py +0 -0
  130. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/__init__.py +0 -0
  131. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
  132. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription.py +0 -0
  133. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
  134. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
  135. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
  136. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/thread/__init__.py +0 -0
  137. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
  138. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/__init__.py +0 -0
  139. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/chapters.py +0 -0
  140. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/datetime.py +0 -0
  141. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/exceptions.py +0 -0
  142. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/ffmpeg.py +0 -0
  143. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_handler.py +0 -0
  144. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_lock.py +0 -0
  145. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_path.py +0 -0
  146. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/logger.py +0 -0
  147. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/retry.py +0 -0
  148. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/script.py +0 -0
  149. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/scriptable.py +0 -0
  150. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/subtitles.py +0 -0
  151. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/system.py +0 -0
  152. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/thumbnail.py +0 -0
  153. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/xml.py +0 -0
  154. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/yaml.py +0 -0
  155. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/__init__.py +0 -0
  156. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
  157. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/file_path_validators.py +0 -0
  158. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/nfo_validators.py +0 -0
  159. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/regex_validator.py +0 -0
  160. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
  161. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
  162. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_datetime.py +0 -0
  163. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_formatter_validators.py +0 -0
  164. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_select_validator.py +0 -0
  165. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/validators.py +0 -0
  166. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
  167. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
  168. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/SOURCES.txt +0 -0
  169. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
  170. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
  171. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/requires.txt +0 -0
  172. {ytdl_sub-2025.12.31.post2 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytdl-sub
3
- Version: 2025.12.31.post2
3
+ Version: 2025.12.31.post3
4
4
  Summary: Automate downloading metadata generation with YoutubeDL
5
5
  Author: Jesse Bannon
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -0,0 +1 @@
1
+ __pypi_version__ = "2025.12.31.post3";__local_version__ = "2025.12.31+869fc0b"
@@ -66,6 +66,22 @@ class Script:
66
66
  deps=deps + [dep.name],
67
67
  )
68
68
 
69
+ for custom_func in variable_dependency.custom_function_dependencies(
70
+ custom_function_definitions=self._functions
71
+ ):
72
+ for dep in self._functions[custom_func.name].variables:
73
+ self._ensure_no_cycle(
74
+ name=variable_name,
75
+ dep=dep.name,
76
+ deps=deps + [custom_func.definition_name()],
77
+ definitions=self._variables,
78
+ )
79
+ self._traverse_variable_dependencies(
80
+ variable_name=variable_name,
81
+ variable_dependency=self._variables[dep.name],
82
+ deps=deps + [custom_func.definition_name(), dep.name],
83
+ )
84
+
69
85
  def _ensure_no_variable_cycles(self, variables: Dict[str, SyntaxTree]):
70
86
  for variable_name, variable_definition in variables.items():
71
87
  self._traverse_variable_dependencies(
@@ -193,6 +193,14 @@ class NamedCustomFunction(NamedArgument, ABC):
193
193
  class ParsedCustomFunction(NamedCustomFunction):
194
194
  num_input_args: int
195
195
 
196
+ def definition_name(self) -> str:
197
+ """
198
+ Returns
199
+ -------
200
+ The function definition name, including the %
201
+ """
202
+ return f"%{self.name}"
203
+
196
204
 
197
205
  @dataclass(frozen=True)
198
206
  class FunctionType(NamedArgument, ABC):
@@ -160,9 +160,20 @@ class VariableDependency(ABC):
160
160
  raise UNREACHABLE
161
161
 
162
162
  @final
163
- def _custom_function_dependencies(
163
+ def custom_function_dependencies(
164
164
  self, custom_function_definitions: Dict[str, "VariableDependency"]
165
165
  ) -> Set[ParsedCustomFunction]:
166
+ """
167
+ Parameters
168
+ ----------
169
+ custom_function_definitions
170
+ Definition of all currently existing custom functions. Needed to check whether
171
+ a lambda function's input function is custom or not.
172
+
173
+ Returns
174
+ -------
175
+ All custom function dependencies
176
+ """
166
177
  custom_functions = self.custom_functions
167
178
  for lambda_func in self.lambdas:
168
179
  if lambda_func.value in custom_function_definitions:
@@ -185,7 +196,7 @@ class VariableDependency(ABC):
185
196
  True if it contains all input variables as a dependency. False otherwise.
186
197
  """
187
198
  # If there are lambdas, see if they are custom functions. If so, check them
188
- for custom_function in self._custom_function_dependencies(custom_function_definitions):
199
+ for custom_function in self.custom_function_dependencies(custom_function_definitions):
189
200
  if not custom_function_definitions[custom_function.name].is_subset_of(
190
201
  variables=variables, custom_function_definitions=custom_function_definitions
191
202
  ):
@@ -205,7 +216,7 @@ class VariableDependency(ABC):
205
216
  True if it contains any of the input variables. False otherwise.
206
217
  """
207
218
  # If there are lambdas, see if they are custom functions. If so, check them
208
- for custom_function in self._custom_function_dependencies(custom_function_definitions):
219
+ for custom_function in self.custom_function_dependencies(custom_function_definitions):
209
220
  if custom_function_definitions[custom_function.name].contains(
210
221
  variables=variables, custom_function_definitions=custom_function_definitions
211
222
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytdl-sub
3
- Version: 2025.12.31.post2
3
+ Version: 2025.12.31.post3
4
4
  Summary: Automate downloading metadata generation with YoutubeDL
5
5
  Author: Jesse Bannon
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1 +0,0 @@
1
- __pypi_version__ = "2025.12.31.post2";__local_version__ = "2025.12.31+7ac525f"