ytdl-sub 2026.1.23__tar.gz → 2026.1.23.post1__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.
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/PKG-INFO +1 -1
- ytdl_sub-2026.1.23.post1/src/ytdl_sub/__init__.py +1 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/script.py +37 -23
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/PKG-INFO +1 -1
- ytdl_sub-2026.1.23/src/ytdl_sub/__init__.py +0 -1
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/LICENSE +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/README.md +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/pyproject.toml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/setup.cfg +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/entrypoint.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/output_summary.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/parsers/cli_to_sub.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/parsers/dl.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/cli/parsers/main.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/config_file.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/config_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/defaults.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/overrides.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/plugin.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/preset.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/preset_options.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/validators/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/validators/options.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/url/validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/base_entry.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/entry.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/entry_parent.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/variable_types.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/variables/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/variables/override_variables.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/main.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/audio_extract.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/chapters.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/date_range.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/file_convert.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/filter_include.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/format.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/internal/view.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/match_filters.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/music_tags.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/subtitles.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/video_tags.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/array_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/date_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/error_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/json_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/map_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/print_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/string_functions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/parser.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/script_output.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/array.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/function.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/map.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/resolvable.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/variable.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/variable_dependency.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/exceptions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/name_validation.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/type_checking.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/subscription.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/thread/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/chapters.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/datetime.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/exceptions.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/ffmpeg.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/file_handler.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/file_lock.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/file_path.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/logger.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/retry.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/script.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/scriptable.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/subtitles.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/system.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/thumbnail.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/xml.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/utils/yaml.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/file_path_validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/nfo_validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/regex_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/string_datetime.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/string_formatter_validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/string_select_validator.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/validators.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/SOURCES.txt +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/requires.txt +0 -0
- {ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__pypi_version__ = "2026.01.23.post1";__local_version__ = "2026.01.23+264e458"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# pylint: disable=missing-raises-doc
|
|
2
2
|
import copy
|
|
3
|
+
from collections import defaultdict
|
|
3
4
|
from typing import Dict
|
|
4
5
|
from typing import List
|
|
5
6
|
from typing import Optional
|
|
@@ -38,59 +39,71 @@ class Script:
|
|
|
38
39
|
``{ %custom_function: syntax }``
|
|
39
40
|
"""
|
|
40
41
|
|
|
41
|
-
def
|
|
42
|
+
def _throw_cycle_error(
|
|
42
43
|
self, name: str, dep: str, deps: List[str], definitions: Dict[str, SyntaxTree]
|
|
43
44
|
):
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
("custom functions", "%") if definitions is self._functions else ("variables", "")
|
|
50
|
-
)
|
|
51
|
-
cycle_deps = [name] + deps + [dep]
|
|
52
|
-
cycle_deps_str = " -> ".join([f"{pre}{name}" for name in cycle_deps])
|
|
45
|
+
type_name, pre = (
|
|
46
|
+
("custom functions", "%") if definitions is self._functions else ("variables", "")
|
|
47
|
+
)
|
|
48
|
+
cycle_deps = [name] + deps + [dep]
|
|
49
|
+
cycle_deps_str = " -> ".join([f"{pre}{name}" for name in cycle_deps])
|
|
53
50
|
|
|
54
|
-
|
|
51
|
+
raise CycleDetected(f"Cycle detected within these {type_name}: {cycle_deps_str}")
|
|
55
52
|
|
|
56
53
|
def _traverse_variable_dependencies(
|
|
57
54
|
self,
|
|
58
55
|
variable_name: str,
|
|
59
56
|
variable_dependency: SyntaxTree,
|
|
60
57
|
deps: List[str],
|
|
58
|
+
ensured: Dict[str, Set[str]],
|
|
61
59
|
) -> None:
|
|
62
60
|
for dep in variable_dependency.variables:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
if variable_name == dep.name:
|
|
62
|
+
self._throw_cycle_error(
|
|
63
|
+
name=variable_name, dep=dep.name, deps=deps, definitions=self._variables
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
if dep.name in ensured[variable_name]:
|
|
67
|
+
continue
|
|
68
|
+
|
|
66
69
|
self._traverse_variable_dependencies(
|
|
67
70
|
variable_name=variable_name,
|
|
68
71
|
variable_dependency=self._variables[dep.name],
|
|
69
72
|
deps=deps + [dep.name],
|
|
73
|
+
ensured=ensured,
|
|
70
74
|
)
|
|
75
|
+
ensured[variable_name].add(dep.name)
|
|
71
76
|
|
|
72
77
|
for custom_func in variable_dependency.custom_function_dependencies(
|
|
73
78
|
custom_function_definitions=self._functions
|
|
74
79
|
):
|
|
75
80
|
for dep in self._functions[custom_func.name].variables:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
if variable_name == dep.name:
|
|
82
|
+
self._throw_cycle_error(
|
|
83
|
+
name=variable_name,
|
|
84
|
+
dep=dep.name,
|
|
85
|
+
deps=deps + [custom_func.definition_name()],
|
|
86
|
+
definitions=self._variables,
|
|
87
|
+
)
|
|
88
|
+
if dep.name in ensured[variable_name]:
|
|
89
|
+
continue
|
|
90
|
+
|
|
82
91
|
self._traverse_variable_dependencies(
|
|
83
92
|
variable_name=variable_name,
|
|
84
93
|
variable_dependency=self._variables[dep.name],
|
|
85
94
|
deps=deps + [custom_func.definition_name(), dep.name],
|
|
95
|
+
ensured=ensured,
|
|
86
96
|
)
|
|
97
|
+
ensured[variable_name].add(dep.name)
|
|
87
98
|
|
|
88
99
|
def _ensure_no_variable_cycles(self, variables: Dict[str, SyntaxTree]):
|
|
100
|
+
ensured: Dict[str, Set[str]] = defaultdict(set)
|
|
89
101
|
for variable_name, variable_definition in variables.items():
|
|
90
102
|
self._traverse_variable_dependencies(
|
|
91
103
|
variable_name=variable_name,
|
|
92
104
|
variable_dependency=variable_definition,
|
|
93
105
|
deps=[],
|
|
106
|
+
ensured=ensured,
|
|
94
107
|
)
|
|
95
108
|
|
|
96
109
|
def _traverse_custom_function_dependencies(
|
|
@@ -100,9 +113,10 @@ class Script:
|
|
|
100
113
|
deps: List[str],
|
|
101
114
|
) -> None:
|
|
102
115
|
for dep in custom_function_dependency.custom_functions:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
116
|
+
if custom_function_name == dep.name:
|
|
117
|
+
self._throw_cycle_error(
|
|
118
|
+
name=custom_function_name, dep=dep.name, deps=deps, definitions=self._functions
|
|
119
|
+
)
|
|
106
120
|
self._traverse_custom_function_dependencies(
|
|
107
121
|
custom_function_name=custom_function_name,
|
|
108
122
|
custom_function_dependency=self._functions[dep.name],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__pypi_version__ = "2026.01.23";__local_version__ = "2026.01.23+c4e112e"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/plugin_mapping.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/plugin_operation.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/config/plugin/preset_plugins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/info_json/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/downloaders/ytdl_options_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/custom_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/function_scripts.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/variable_definitions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/script/variable_types.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/entries/variables/override_variables.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/plugins/output_directory_nfo_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/internal/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/internal/view.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/singles.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/array_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/boolean_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/date_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/error_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/json_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/map_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/numeric_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/print_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/regex_functions.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/functions/string_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/types/variable_dependency.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/exception_formatters.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/script/utils/name_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/base_subscription.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/subscriptions/subscription_download.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/audo_codec_validator.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/file_path_validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/source_variable_validator.py
RENAMED
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/strict_dict_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2026.1.23 → ytdl_sub-2026.1.23.post1}/src/ytdl_sub/validators/string_select_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|