ytdl-sub 2025.12.31__tar.gz → 2025.12.31.post2__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 → ytdl_sub-2025.12.31.post2}/PKG-INFO +1 -1
  2. ytdl_sub-2025.12.31.post2/src/ytdl_sub/__init__.py +1 -0
  3. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/script.py +8 -0
  4. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/variable_dependency.py +18 -2
  5. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/string_formatter_validators.py +5 -0
  6. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub.egg-info/PKG-INFO +1 -1
  7. ytdl_sub-2025.12.31/src/ytdl_sub/__init__.py +0 -1
  8. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/LICENSE +0 -0
  9. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/README.md +0 -0
  10. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/pyproject.toml +0 -0
  11. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/setup.cfg +0 -0
  12. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/__init__.py +0 -0
  13. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/entrypoint.py +0 -0
  14. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/output_summary.py +0 -0
  15. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
  16. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
  17. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/parsers/cli_to_sub.py +0 -0
  18. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/parsers/dl.py +0 -0
  19. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/cli/parsers/main.py +0 -0
  20. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/__init__.py +0 -0
  21. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/config_file.py +0 -0
  22. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/config_validator.py +0 -0
  23. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/defaults.py +0 -0
  24. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/overrides.py +0 -0
  25. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/plugin/__init__.py +0 -0
  26. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/plugin/plugin.py +0 -0
  27. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
  28. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
  29. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
  30. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/preset.py +0 -0
  31. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/preset_options.py +0 -0
  32. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/validators/__init__.py +0 -0
  33. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/validators/options.py +0 -0
  34. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
  35. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/__init__.py +0 -0
  36. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
  37. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
  38. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
  39. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
  40. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
  41. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/url/validators.py +0 -0
  42. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
  43. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
  44. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/__init__.py +0 -0
  45. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/base_entry.py +0 -0
  46. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/entry.py +0 -0
  47. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/entry_parent.py +0 -0
  48. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/script/__init__.py +0 -0
  49. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
  50. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
  51. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
  52. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/script/variable_types.py +0 -0
  53. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/variables/__init__.py +0 -0
  54. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/entries/variables/override_variables.py +0 -0
  55. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/main.py +0 -0
  56. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/__init__.py +0 -0
  57. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/audio_extract.py +0 -0
  58. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/chapters.py +0 -0
  59. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/date_range.py +0 -0
  60. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
  61. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/file_convert.py +0 -0
  62. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
  63. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/filter_include.py +0 -0
  64. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/format.py +0 -0
  65. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
  66. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/internal/view.py +0 -0
  67. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/match_filters.py +0 -0
  68. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/music_tags.py +0 -0
  69. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
  70. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
  71. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
  72. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
  73. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
  74. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/subtitles.py +0 -0
  75. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
  76. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/plugins/video_tags.py +0 -0
  77. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
  78. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
  79. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +0 -0
  80. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
  81. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
  82. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
  83. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
  84. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
  85. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
  86. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
  87. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
  88. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
  89. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
  90. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
  91. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
  92. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
  93. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
  94. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
  95. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
  96. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
  97. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
  98. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
  99. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
  100. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
  101. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
  102. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
  103. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
  104. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/__init__.py +0 -0
  105. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/__init__.py +0 -0
  106. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/array_functions.py +0 -0
  107. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
  108. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
  109. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/date_functions.py +0 -0
  110. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/error_functions.py +0 -0
  111. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/json_functions.py +0 -0
  112. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/map_functions.py +0 -0
  113. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
  114. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/print_functions.py +0 -0
  115. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
  116. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/functions/string_functions.py +0 -0
  117. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/parser.py +0 -0
  118. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/script_output.py +0 -0
  119. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/__init__.py +0 -0
  120. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/array.py +0 -0
  121. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/function.py +0 -0
  122. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/map.py +0 -0
  123. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/resolvable.py +0 -0
  124. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
  125. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/types/variable.py +0 -0
  126. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/utils/__init__.py +0 -0
  127. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
  128. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/utils/exceptions.py +0 -0
  129. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/utils/name_validation.py +0 -0
  130. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/script/utils/type_checking.py +0 -0
  131. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/__init__.py +0 -0
  132. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
  133. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/subscription.py +0 -0
  134. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
  135. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
  136. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
  137. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/thread/__init__.py +0 -0
  138. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
  139. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/__init__.py +0 -0
  140. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/chapters.py +0 -0
  141. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/datetime.py +0 -0
  142. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/exceptions.py +0 -0
  143. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/ffmpeg.py +0 -0
  144. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/file_handler.py +0 -0
  145. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/file_lock.py +0 -0
  146. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/file_path.py +0 -0
  147. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/logger.py +0 -0
  148. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/retry.py +0 -0
  149. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/script.py +0 -0
  150. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/scriptable.py +0 -0
  151. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/subtitles.py +0 -0
  152. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/system.py +0 -0
  153. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/thumbnail.py +0 -0
  154. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/xml.py +0 -0
  155. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/utils/yaml.py +0 -0
  156. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/__init__.py +0 -0
  157. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
  158. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/file_path_validators.py +0 -0
  159. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/nfo_validators.py +0 -0
  160. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/regex_validator.py +0 -0
  161. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
  162. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
  163. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/string_datetime.py +0 -0
  164. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/string_select_validator.py +0 -0
  165. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/validators/validators.py +0 -0
  166. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
  167. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
  168. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub.egg-info/SOURCES.txt +0 -0
  169. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
  170. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
  171. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/src/ytdl_sub.egg-info/requires.txt +0 -0
  172. {ytdl_sub-2025.12.31 → ytdl_sub-2025.12.31.post2}/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
3
+ Version: 2025.12.31.post2
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.post2";__local_version__ = "2025.12.31+7ac525f"
@@ -288,6 +288,14 @@ class Script:
288
288
  unresolvable=unresolvable,
289
289
  )
290
290
 
291
+ for lambda_func in current_var.lambdas:
292
+ if lambda_func.value in self._functions:
293
+ subset_to_resolve |= self._recursive_get_unresolved_output_filter_variables(
294
+ current_var=self._functions[lambda_func.value],
295
+ subset_to_resolve=subset_to_resolve,
296
+ unresolvable=unresolvable,
297
+ )
298
+
291
299
  return subset_to_resolve
292
300
 
293
301
  def _get_unresolved_output_filter(
@@ -159,6 +159,20 @@ class VariableDependency(ABC):
159
159
 
160
160
  raise UNREACHABLE
161
161
 
162
+ @final
163
+ def _custom_function_dependencies(
164
+ self, custom_function_definitions: Dict[str, "VariableDependency"]
165
+ ) -> Set[ParsedCustomFunction]:
166
+ custom_functions = self.custom_functions
167
+ for lambda_func in self.lambdas:
168
+ if lambda_func.value in custom_function_definitions:
169
+ custom_functions.add(
170
+ ParsedCustomFunction(
171
+ name=lambda_func.value, num_input_args=lambda_func.num_input_args()
172
+ )
173
+ )
174
+ return custom_functions
175
+
162
176
  @final
163
177
  def is_subset_of(
164
178
  self,
@@ -170,7 +184,8 @@ class VariableDependency(ABC):
170
184
  -------
171
185
  True if it contains all input variables as a dependency. False otherwise.
172
186
  """
173
- for custom_function in self.custom_functions:
187
+ # 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):
174
189
  if not custom_function_definitions[custom_function.name].is_subset_of(
175
190
  variables=variables, custom_function_definitions=custom_function_definitions
176
191
  ):
@@ -189,7 +204,8 @@ class VariableDependency(ABC):
189
204
  -------
190
205
  True if it contains any of the input variables. False otherwise.
191
206
  """
192
- for custom_function in self.custom_functions:
207
+ # 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):
193
209
  if custom_function_definitions[custom_function.name].contains(
194
210
  variables=variables, custom_function_definitions=custom_function_definitions
195
211
  ):
@@ -241,6 +241,11 @@ def _validate_formatter(
241
241
  variable_names = {var.name for var in parsed.variables}
242
242
  custom_function_names = {f"%{func.name}" for func in parsed.custom_functions}
243
243
 
244
+ # Add lambda functions to custom function names, if it's custom
245
+ for lambda_func in parsed.lambdas:
246
+ if lambda_func in mock_script.function_names:
247
+ custom_function_names.add(lambda_func.value)
248
+
244
249
  if not variable_names.issubset(mock_script.variable_names):
245
250
  raise StringFormattingVariableNotFoundException(
246
251
  "contains the following variables that do not exist: "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytdl-sub
3
- Version: 2025.12.31
3
+ Version: 2025.12.31.post2
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";__local_version__ = "2025.12.31+1abe2a4"