ytdl-sub 2025.12.8__tar.gz → 2025.12.30__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.8 → ytdl_sub-2025.12.30}/PKG-INFO +1 -1
  2. ytdl_sub-2025.12.30/src/ytdl_sub/__init__.py +1 -0
  3. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/overrides.py +19 -0
  4. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/preset.py +2 -0
  5. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/variables/override_variables.py +1 -4
  6. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +1 -2
  7. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/script.py +16 -15
  8. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub.egg-info/PKG-INFO +1 -1
  9. ytdl_sub-2025.12.8/src/ytdl_sub/__init__.py +0 -1
  10. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/LICENSE +0 -0
  11. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/README.md +0 -0
  12. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/pyproject.toml +0 -0
  13. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/setup.cfg +0 -0
  14. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/__init__.py +0 -0
  15. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/entrypoint.py +0 -0
  16. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/output_summary.py +0 -0
  17. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
  18. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
  19. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/parsers/cli_to_sub.py +0 -0
  20. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/parsers/dl.py +0 -0
  21. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/cli/parsers/main.py +0 -0
  22. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/__init__.py +0 -0
  23. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/config_file.py +0 -0
  24. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/config_validator.py +0 -0
  25. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/defaults.py +0 -0
  26. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/plugin/__init__.py +0 -0
  27. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/plugin/plugin.py +0 -0
  28. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
  29. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
  30. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
  31. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/preset_options.py +0 -0
  32. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/validators/__init__.py +0 -0
  33. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/validators/options.py +0 -0
  34. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
  35. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/__init__.py +0 -0
  36. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
  37. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
  38. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
  39. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
  40. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
  41. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/url/validators.py +0 -0
  42. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
  43. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
  44. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/__init__.py +0 -0
  45. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/base_entry.py +0 -0
  46. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/entry.py +0 -0
  47. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/entry_parent.py +0 -0
  48. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/script/__init__.py +0 -0
  49. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
  50. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
  51. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
  52. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/script/variable_types.py +0 -0
  53. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/entries/variables/__init__.py +0 -0
  54. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/main.py +0 -0
  55. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/__init__.py +0 -0
  56. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/audio_extract.py +0 -0
  57. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/chapters.py +0 -0
  58. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/date_range.py +0 -0
  59. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
  60. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/file_convert.py +0 -0
  61. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
  62. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/filter_include.py +0 -0
  63. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/format.py +0 -0
  64. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
  65. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/internal/view.py +0 -0
  66. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/match_filters.py +0 -0
  67. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/music_tags.py +0 -0
  68. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
  69. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
  70. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
  71. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
  72. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
  73. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/subtitles.py +0 -0
  74. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
  75. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/plugins/video_tags.py +0 -0
  76. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
  77. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
  78. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
  79. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
  80. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
  81. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
  82. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
  83. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
  84. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
  85. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
  86. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
  87. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
  88. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
  89. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
  90. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
  91. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
  92. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
  93. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
  94. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
  95. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
  96. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
  97. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
  98. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
  99. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
  100. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
  101. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
  102. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/__init__.py +0 -0
  103. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/__init__.py +0 -0
  104. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/array_functions.py +0 -0
  105. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
  106. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
  107. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/date_functions.py +0 -0
  108. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/error_functions.py +0 -0
  109. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/json_functions.py +0 -0
  110. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/map_functions.py +0 -0
  111. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
  112. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/print_functions.py +0 -0
  113. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
  114. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/functions/string_functions.py +0 -0
  115. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/parser.py +0 -0
  116. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/script_output.py +0 -0
  117. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/__init__.py +0 -0
  118. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/array.py +0 -0
  119. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/function.py +0 -0
  120. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/map.py +0 -0
  121. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/resolvable.py +0 -0
  122. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
  123. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/variable.py +0 -0
  124. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/types/variable_dependency.py +0 -0
  125. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/utils/__init__.py +0 -0
  126. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
  127. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/utils/exceptions.py +0 -0
  128. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/utils/name_validation.py +0 -0
  129. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/script/utils/type_checking.py +0 -0
  130. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/__init__.py +0 -0
  131. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
  132. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/subscription.py +0 -0
  133. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
  134. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
  135. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
  136. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/thread/__init__.py +0 -0
  137. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
  138. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/__init__.py +0 -0
  139. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/chapters.py +0 -0
  140. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/datetime.py +0 -0
  141. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/exceptions.py +0 -0
  142. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/ffmpeg.py +0 -0
  143. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/file_handler.py +0 -0
  144. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/file_lock.py +0 -0
  145. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/file_path.py +0 -0
  146. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/logger.py +0 -0
  147. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/retry.py +0 -0
  148. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/script.py +0 -0
  149. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/scriptable.py +0 -0
  150. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/subtitles.py +0 -0
  151. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/system.py +0 -0
  152. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/thumbnail.py +0 -0
  153. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/xml.py +0 -0
  154. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/utils/yaml.py +0 -0
  155. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/__init__.py +0 -0
  156. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
  157. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/file_path_validators.py +0 -0
  158. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/nfo_validators.py +0 -0
  159. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/regex_validator.py +0 -0
  160. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
  161. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
  162. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/string_datetime.py +0 -0
  163. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/string_formatter_validators.py +0 -0
  164. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/string_select_validator.py +0 -0
  165. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/validators/validators.py +0 -0
  166. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
  167. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
  168. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub.egg-info/SOURCES.txt +0 -0
  169. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
  170. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
  171. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/src/ytdl_sub.egg-info/requires.txt +0 -0
  172. {ytdl_sub-2025.12.8 → ytdl_sub-2025.12.30}/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.8
3
+ Version: 2025.12.30
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.30";__local_version__ = "2025.12.30+344753c"
@@ -1,5 +1,6 @@
1
1
  from typing import Any
2
2
  from typing import Dict
3
+ from typing import Iterable
3
4
  from typing import Optional
4
5
  from typing import Set
5
6
 
@@ -88,6 +89,24 @@ class Overrides(UnstructuredDictFormatterValidator, Scriptable):
88
89
 
89
90
  return True
90
91
 
92
+ def ensure_variable_names_not_a_plugin(self, plugin_names: Iterable[str]) -> None:
93
+ """
94
+ Throws an error if an override variable or function has the same name as a
95
+ preset key. This is to avoid confusion when accidentally defining things in
96
+ overrides that are meant to be in the preset.
97
+ """
98
+ for name in self.keys:
99
+ if name.startswith("%"):
100
+ name = name[1:]
101
+
102
+ if name in plugin_names:
103
+ raise self._validation_exception(
104
+ f"Override variable with name {name} cannot be used since it is"
105
+ " the name of a plugin. Perhaps you meant to define it as a plugin? If so,"
106
+ " indent it left to make it at the same level as overrides.",
107
+ exception_class=InvalidVariableNameException,
108
+ )
109
+
91
110
  def ensure_variable_name_valid(self, name: str) -> None:
92
111
  """
93
112
  Ensures the variable name does not collide with any entry variables or built-in functions.
@@ -194,6 +194,8 @@ class Preset(_PresetShell):
194
194
  self.plugins: PresetPlugins = self._validate_and_get_plugins()
195
195
  self.overrides = self._validate_key(key="overrides", validator=Overrides, default={})
196
196
 
197
+ self.overrides.ensure_variable_names_not_a_plugin(plugin_names=PRESET_KEYS)
198
+
197
199
  VariableValidation(
198
200
  downloader_options=self.downloader_options,
199
201
  output_options=self.output_options,
@@ -11,9 +11,6 @@ from ytdl_sub.entries.script.variable_types import Variable
11
11
  from ytdl_sub.script.functions import Functions
12
12
  from ytdl_sub.script.utils.name_validation import is_valid_name
13
13
 
14
- # TODO: use this
15
- SUBSCRIPTION_ARRAY = "subscription_array"
16
-
17
14
 
18
15
  class SubscriptionVariables:
19
16
  @staticmethod
@@ -163,7 +160,7 @@ class OverrideHelpers:
163
160
  True if the override name itself is valid. False otherwise.
164
161
  """
165
162
  if name.startswith("%"):
166
- return is_valid_name(name=name[1:])
163
+ name = name[1:]
167
164
 
168
165
  return is_valid_name(name=name)
169
166
 
@@ -11,8 +11,7 @@ presets:
11
11
 
12
12
  # Set the default date_range to 2 months
13
13
  overrides:
14
- date_range: "2months" # keep for legacy-reasons
15
- only_recent_date_range: "{date_range}"
14
+ only_recent_date_range: "2months"
16
15
 
17
16
  #############################################################################
18
17
  # Only Recent
@@ -307,10 +307,9 @@ class Script:
307
307
 
308
308
  def _get_unresolved_output_filter(
309
309
  self,
310
- unresolved: Dict[Variable, SyntaxTree],
311
310
  output_filter: Set[str],
312
311
  unresolvable: Set[Variable],
313
- ) -> Dict[Variable, SyntaxTree]:
312
+ ) -> Set[str]:
314
313
  """
315
314
  When an output filter is applied, only a subset of variables that the filter
316
315
  depends on need to be resolved.
@@ -331,7 +330,7 @@ class Script:
331
330
  unresolvable=unresolvable,
332
331
  )
333
332
 
334
- return {var: syntax for var, syntax in unresolved.items() if var.name in subset_to_resolve}
333
+ return subset_to_resolve
335
334
 
336
335
  def _resolve(
337
336
  self,
@@ -367,18 +366,21 @@ class Script:
367
366
 
368
367
  unresolvable: Set[Variable] = {Variable(name) for name in (unresolvable or {})}
369
368
  unresolved_filter = set(resolved.keys()).union(unresolvable)
370
- unresolved: Dict[Variable, SyntaxTree] = {
371
- Variable(name): ast
372
- for name, ast in self._variables.items()
373
- if Variable(name) not in unresolved_filter
374
- }
375
369
 
376
370
  if output_filter:
377
- unresolved = self._get_unresolved_output_filter(
378
- unresolved=unresolved,
379
- output_filter=output_filter,
380
- unresolvable=unresolvable,
381
- )
371
+ unresolved = {
372
+ Variable(name): self._variables[name]
373
+ for name in self._get_unresolved_output_filter(
374
+ output_filter=output_filter,
375
+ unresolvable=unresolvable,
376
+ )
377
+ }
378
+ else:
379
+ unresolved = {
380
+ Variable(name): ast
381
+ for name, ast in self._variables.items()
382
+ if Variable(name) not in unresolved_filter
383
+ }
382
384
 
383
385
  while unresolved:
384
386
  unresolved_count: int = len(unresolved)
@@ -556,8 +558,7 @@ class Script:
556
558
  ).output
557
559
  finally:
558
560
  for name in variable_definitions.keys():
559
- if name in self._variables:
560
- del self._variables[name]
561
+ self._variables.pop(name, None)
561
562
 
562
563
  def get(self, variable_name: str) -> Resolvable:
563
564
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytdl-sub
3
- Version: 2025.12.8
3
+ Version: 2025.12.30
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.08";__local_version__ = "2025.12.08+157a0b5"
File without changes
File without changes
File without changes