ytdl-sub 2025.12.31.post1__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.
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/PKG-INFO +1 -1
- ytdl_sub-2025.12.31.post3/src/ytdl_sub/__init__.py +1 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/script.py +24 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/resolvable.py +8 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/variable_dependency.py +28 -12
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_formatter_validators.py +5 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/PKG-INFO +1 -1
- ytdl_sub-2025.12.31.post1/src/ytdl_sub/__init__.py +0 -1
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/LICENSE +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/README.md +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/pyproject.toml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/setup.cfg +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/entrypoint.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/output_summary.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/output_transaction_log.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/cli_to_sub.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/dl.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/main.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/config_file.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/config_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/defaults.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/overrides.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin_mapping.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin_operation.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/preset_plugins.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/preset.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/preset_options.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/options.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/variable_validation.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/info_json/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/info_json/info_json_downloader.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/source_plugin.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/downloader.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/validators.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/ytdl_options_builder.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/ytdlp.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/base_entry.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/entry.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/entry_parent.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/custom_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/function_scripts.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/variable_definitions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/variable_types.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/variables/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/variables/override_variables.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/main.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/audio_extract.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/chapters.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/date_range.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/embed_thumbnail.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/file_convert.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_exclude.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_include.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/format.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/view.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/match_filters.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/music_tags.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/nfo_tags.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/output_directory_nfo_tags.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/split_by_chapters.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/square_thumbnail.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/static_nfo_tags.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/subtitles.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/throttle_protection.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/video_tags.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/download_deletion_options.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/filter_duration.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/filter_keywords.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/media_quality.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/players.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/throttle_protection.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url_bilateral.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/helpers/url_categorized.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/internal/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/internal/view.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/albums_from_chapters.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/albums_from_playlists.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/singles.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music/soundcloud.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_base.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_video_extras.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/music_videos/music_videos.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/episode.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_by_date.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/array_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/boolean_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/conditional_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/date_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/error_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/json_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/map_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/numeric_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/print_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/regex_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/string_functions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/parser.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/script_output.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/array.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/function.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/map.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/syntax_tree.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/variable.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/exception_formatters.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/exceptions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/name_validation.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/type_checking.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/base_subscription.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_download.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_validators.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription_ytdl_options.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/thread/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/thread/log_entries_downloaded_listener.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/chapters.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/datetime.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/exceptions.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/ffmpeg.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_handler.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_lock.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/file_path.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/logger.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/retry.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/script.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/scriptable.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/subtitles.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/system.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/thumbnail.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/xml.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/utils/yaml.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/audo_codec_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/file_path_validators.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/nfo_validators.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/regex_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/source_variable_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/strict_dict_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_datetime.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_select_validator.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/validators.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/ytdl_additions/__init__.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/ytdl_additions/enhanced_download_archive.py +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/SOURCES.txt +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/dependency_links.txt +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/entry_points.txt +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/requires.txt +0 -0
- {ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/top_level.txt +0 -0
|
@@ -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(
|
|
@@ -288,6 +304,14 @@ class Script:
|
|
|
288
304
|
unresolvable=unresolvable,
|
|
289
305
|
)
|
|
290
306
|
|
|
307
|
+
for lambda_func in current_var.lambdas:
|
|
308
|
+
if lambda_func.value in self._functions:
|
|
309
|
+
subset_to_resolve |= self._recursive_get_unresolved_output_filter_variables(
|
|
310
|
+
current_var=self._functions[lambda_func.value],
|
|
311
|
+
subset_to_resolve=subset_to_resolve,
|
|
312
|
+
unresolvable=unresolvable,
|
|
313
|
+
)
|
|
314
|
+
|
|
291
315
|
return subset_to_resolve
|
|
292
316
|
|
|
293
317
|
def _get_unresolved_output_filter(
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/resolvable.py
RENAMED
|
@@ -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):
|
|
@@ -114,7 +114,6 @@ class VariableDependency(ABC):
|
|
|
114
114
|
output.add(ParsedCustomFunction(name=arg.name, num_input_args=len(arg.args)))
|
|
115
115
|
if isinstance(arg, VariableDependency):
|
|
116
116
|
output.update(arg.custom_functions)
|
|
117
|
-
# if isinstance(arg, Lambda)
|
|
118
117
|
|
|
119
118
|
return output
|
|
120
119
|
|
|
@@ -160,6 +159,31 @@ class VariableDependency(ABC):
|
|
|
160
159
|
|
|
161
160
|
raise UNREACHABLE
|
|
162
161
|
|
|
162
|
+
@final
|
|
163
|
+
def custom_function_dependencies(
|
|
164
|
+
self, custom_function_definitions: Dict[str, "VariableDependency"]
|
|
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
|
+
"""
|
|
177
|
+
custom_functions = self.custom_functions
|
|
178
|
+
for lambda_func in self.lambdas:
|
|
179
|
+
if lambda_func.value in custom_function_definitions:
|
|
180
|
+
custom_functions.add(
|
|
181
|
+
ParsedCustomFunction(
|
|
182
|
+
name=lambda_func.value, num_input_args=lambda_func.num_input_args()
|
|
183
|
+
)
|
|
184
|
+
)
|
|
185
|
+
return custom_functions
|
|
186
|
+
|
|
163
187
|
@final
|
|
164
188
|
def is_subset_of(
|
|
165
189
|
self,
|
|
@@ -171,7 +195,8 @@ class VariableDependency(ABC):
|
|
|
171
195
|
-------
|
|
172
196
|
True if it contains all input variables as a dependency. False otherwise.
|
|
173
197
|
"""
|
|
174
|
-
|
|
198
|
+
# If there are lambdas, see if they are custom functions. If so, check them
|
|
199
|
+
for custom_function in self.custom_function_dependencies(custom_function_definitions):
|
|
175
200
|
if not custom_function_definitions[custom_function.name].is_subset_of(
|
|
176
201
|
variables=variables, custom_function_definitions=custom_function_definitions
|
|
177
202
|
):
|
|
@@ -191,16 +216,7 @@ class VariableDependency(ABC):
|
|
|
191
216
|
True if it contains any of the input variables. False otherwise.
|
|
192
217
|
"""
|
|
193
218
|
# If there are lambdas, see if they are custom functions. If so, check them
|
|
194
|
-
|
|
195
|
-
for lambda_func in self.lambdas:
|
|
196
|
-
if lambda_func.value in custom_function_definitions:
|
|
197
|
-
custom_functions_to_check.add(
|
|
198
|
-
ParsedCustomFunction(
|
|
199
|
-
name=lambda_func.value, num_input_args=lambda_func.num_input_args()
|
|
200
|
-
)
|
|
201
|
-
)
|
|
202
|
-
|
|
203
|
-
for custom_function in custom_functions_to_check:
|
|
219
|
+
for custom_function in self.custom_function_dependencies(custom_function_definitions):
|
|
204
220
|
if custom_function_definitions[custom_function.name].contains(
|
|
205
221
|
variables=variables, custom_function_definitions=custom_function_definitions
|
|
206
222
|
):
|
|
@@ -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 +0,0 @@
|
|
|
1
|
-
__pypi_version__ = "2025.12.31.post1";__local_version__ = "2025.12.31+d373935"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/output_transaction_log.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/cli/parsers/cli_to_sub.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/config_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/plugin_mapping.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/plugin/preset_plugins.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/preset_options.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/config/validators/options.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/source_plugin.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/downloader.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/downloaders/url/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/entry_parent.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/script/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/entries/variables/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/audio_extract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/embed_thumbnail.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/file_convert.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_exclude.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/filter_include.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/__init__.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/internal/view.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/match_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/split_by_chapters.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/square_thumbnail.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/static_nfo_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/plugins/throttle_protection.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/prebuilt_presets/__init__.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/functions/__init__.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
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/script_output.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/function.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/syntax_tree.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/types/variable.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/exceptions.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/name_validation.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/script/utils/type_checking.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/subscriptions/subscription.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/nfo_validators.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/regex_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/string_datetime.py
RENAMED
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/validators/validators.py
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub/ytdl_additions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ytdl_sub-2025.12.31.post1 → ytdl_sub-2025.12.31.post3}/src/ytdl_sub.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|