Skip to content

Cryptic error when None is an input #803

@PythonCoderAS

Description

@PythonCoderAS

Input: None

Report:

version=3.8.0
string=None
options={'expected_title': ['OSS 117', 'This is Us'], 'allowed_countries': ['au', 'gb', 'us'], 'allowed_languages': ['ca', 'cs', 'de', 'en', 'es', 'fr', 'he', 'hi', 'hu', 'it', 'ja', 'ko', 'mul', 'nl',
'no', 'pl', 'pt', 'ro', 'ru', 'sv', 'te', 'uk', 'und'], 'advanced_config': {'common_words': ['ca', 'cat', 'de', 'he', 'it', 'no', 'por', 'rum', 'se', 'st', 'sub'], 'groups': {'starting': '([{', 'ending':
')]}'}, 'audio_codec': {'audio_codec': {'MP3': {'string': ['MP3', 'LAME'], 'regex': ['LAME(?:\\d)+-?(?:\\d)+']}, 'MP2': 'MP2', 'Dolby Digital': {'string': ['Dolby', 'DolbyDigital'], 'regex':
['Dolby-Digital', 'DD', 'AC-?3D?']}, 'Dolby Atmos': {'string': ['Atmos'], 'regex': ['Dolby-?Atmos']}, 'AAC': 'AAC', 'Dolby Digital Plus': {'string': ['DDP', 'DD+'], 'regex': ['E-?AC-?3']}, 'FLAC': 'Flac',
'DTS': 'DTS', 'DTS-HD': {'regex': ['DTS-?HD', 'DTS(?=-?MA)'], 'conflict_solver': "lambda match, other: other if other.name == 'audio_codec' else '__default__'"}, 'DTS:X': {'string': ['DTS:X', 'DTS-X',
'DTSX']}, 'Dolby TrueHD': {'regex': ['True-?HD']}, 'Opus': 'Opus', 'Vorbis': 'Vorbis', 'PCM': 'PCM', 'LPCM': 'LPCM'}, 'audio_channels': {'1.0': ['1ch', 'mono', 're:(1[\\W_]0(?:ch)?)(?=[^\\d]|$)'], '2.0':
['2ch', 'stereo', {'regex': '(2[\\W_]0(?:ch)?)(?=[^\\d]|$)', 'children': True}, {'string': '20', 'validator': 'import:seps_after', 'tags': 'weak-audio_channels'}], '5.1': ['5ch', '6ch', {'regex':
'(5[\\W_][01](?:ch)?)(?=[^\\d]|$)', 'children': True}, {'regex': '(6[\\W_]0(?:ch)?)(?=[^\\d]|$)', 'children': True}, {'regex': '5[01]', 'validator': 'import:seps_after', 'tags': 'weak-audio_channels'}],
'7.1': ['7ch', '8ch', {'regex': '(7[\\W_][01](?:ch)?)(?=[^\\d]|$)', 'children': True}, {'regex': '7[01]', 'validator': 'import:seps_after', 'tags': 'weak-audio_channels'}]}, 'audio_profile': {'Master
Audio': {'string': 'MA', 'tags': ['audio_profile.rule', 'DTS-HD']}, 'High Resolution Audio': {'string': ['HR', 'HRA'], 'tags': ['audio_profile.rule', 'DTS-HD']}, 'Extended Surround': {'string': 'ES',
'tags': ['audio_profile.rule', 'DTS']}, 'High Efficiency': {'string': 'HE', 'tags': ['audio_profile.rule', 'AAC']}, 'Low Complexity': {'string': 'LC', 'tags': ['audio_profile.rule', 'AAC']}, 'High Quality':
{'string': 'HQ', 'tags': ['audio_profile.rule', 'Dolby Digital']}, 'EX': {'string': 'EX', 'tags': ['audio_profile.rule', 'Dolby Digital']}}}, 'bit_rate': {'bit_rate': {'_': {'regex': ['\\d+-?b(ps|its?)',
'\\d+\\.\\d+-?b(ps|its?)'], 'conflict_solver': "lambda match, other: match if other.name == 'audio_channels' and 'weak-audio_channels' not in other.tags else other", 'formatter':
'import:guessit.rules.common.quantity:BitRate.fromstring', 'tags': ['release-group-prefix']}}}, 'bonus': {'bonus': {'_': {'regex': 'x(\\d+)', 'private_parent': True, 'children': True, 'formatter':
'eval:int', 'validator': {'__parent__': 'import:seps_surround'}, 'validate_all': True, 'conflict_solver': "lambda match, conflicting: match if conflicting.name in ('video_codec', 'episode') and
'weak-episode' not in conflicting.tags else '__default__'"}}}, 'cd': {'_cd_of_cd_count': {'regex': 'cd-?(?P<cd>\\d+)(?:-?of-?(?P<cd_count>\\d+))?', 'validator': {'cd': 'lambda match: 0 < match.value < 100',
'cd_count': 'lambda match: 0 < match.value < 100'}, 'formatter': {'cd': 'eval:int', 'cd_count': 'eval:int'}, 'children': True, 'private_parent': True, 'properties': {'cd': [None], 'cd_count': [None]}},
'_cd_count': {'regex': '(?P<cd_count>\\d+)-?cds?', 'validator': {'cd': 'lambda match: 0 < match.value < 100', 'cd_count': 'lambda match: 0 < match.value < 100'}, 'formatter': {'cd_count': 'eval:int'},
'children': True, 'private_parent': True, 'properties': {'cd': [None], 'cd_count': [None]}}}, 'container': {'subtitles': ['srt', 'idx', 'sub', 'ssa', 'ass'], 'info': ['nfo'], 'videos': ['3g2', '3gp',
'3gp2', 'asf', 'avi', 'divx', 'flv', 'iso', 'm4v', 'mk2', 'mk3d', 'mka', 'mkv', 'mov', 'mp4', 'mp4a', 'mpeg', 'mpg', 'ogg', 'ogm', 'ogv', 'qt', 'ra', 'ram', 'rm', 'ts', 'm2ts', 'vob', 'wav', 'webm', 'wma',
'wmv'], 'torrent': ['torrent'], 'nzb': ['nzb']}, 'country': {'synonyms': {'ES': ['españa'], 'GB': ['UK'], 'BR': ['brazilian', 'bra'], 'CA': ['québec', 'quebec', 'qc'], 'MX': ['Latinoamérica', 'latin
america']}}, 'edition': {'edition': {'Collector': {'string': ['collector'], 'regex': ["collector'?s?-edition", 'edition-collector']}, 'Special': [{'regex': ['special-edition', 'edition-special'],
'conflict_solver': "lambda match, other: other if other.name == 'episode_details' and other.value == 'Special' else '__default__'"}, {'string': 'se', 'tags': 'has-neighbor'}], "Director's Definitive Cut":
'ddc', 'Criterion': {'string': ['CC', 'Criterion'], 'regex': ['criterion-edition', 'edition-criterion']}, 'Deluxe': {'string': ['deluxe'], 'regex': ['deluxe-edition', 'edition-deluxe']}, 'Limited':
{'string': ['limited'], 'regex': ['limited-edition'], 'tags': ['has-neighbor', 'release-group-prefix']}, 'Theatrical': {'string': ['theatrical'], 'regex': ['theatrical-cut', 'theatrical-edition']},
"Director's Cut": {'string': ['DC'], 'regex': ["director'?s?-cut", "director'?s?-cut-edition", "edition-director'?s?-cut"]}, 'Extended': {'string': ['extended'], 'regex': ['extended-?cut',
'extended-?version'], 'tags': ['has-neighbor', 'release-group-prefix']}, 'Alternative Cut': {'regex': ['alternat(e|ive)(?:-?Cut)?'], 'tags': ['has-neighbor', 'release-group-prefix']}, 'Remastered':
[{'regex': '(?:4k.)?remaster(?:ed)?', 'tags': ['release-group-prefix']}], 'Restored': [{'regex': '(?:4k.)?restore(?:d)?', 'tags': ['release-group-prefix']}], 'Uncensored': {'string': 'Uncensored', 'tags':
['has-neighbor', 'release-group-prefix']}, 'Uncut': {'string': 'Uncut', 'tags': ['has-neighbor', 'release-group-prefix']}, 'Unrated': {'string': 'Unrated', 'tags': ['has-neighbor', 'release-group-prefix']},
'Festival': {'string': 'Festival', 'tags': ['has-neighbor-before', 'has-neighbor-after']}, 'IMAX': {'string': ['imax'], 'regex': ['imax-edition']}, 'Fan': {'regex': ['fan-edit(?:ion)?', 'fan-collection']},
'Ultimate': {'regex': ['ultimate-edition']}, '_Ultimate_Collector': {'regex': ["ultimate-collector'?s?-edition"], 'value': ['Ultimate', 'Collector']}, '_Ultimate_Fan': {'regex':
['ultimate-fan-edit(?:ion)?', 'ultimate-fan-collection'], 'value': ['Ultimate', 'Fan']}}}, 'episodes': {'season_max_range': 100, 'episode_max_range': 100, 'max_range_gap': 1, 'season_markers': ['s'],
'season_ep_markers': ['x'], 'disc_markers': ['d'], 'episode_markers': ['xe', 'ex', 'ep', 'e', 'x'], 'range_separators': ['-', '~', 'to', 'a'], 'discrete_separators': ['+', '&', 'and', 'et'], 'season_words':
['season', 'saison', 'seizoen', 'seasons', 'saisons', 'tem', 'temp', 'temporada', 'temporadas', 'stagione'], 'episode_words': ['episode', 'episodes', 'eps', 'ep', 'episodio', 'episodios', 'capitulo',
'capitulos'], 'of_words': ['of', 'sur'], 'all_words': ['All']}, 'film': {'film': {'_f': {'regex': 'f(\\d{1,2})', 'name': 'film', 'validate_all': True, 'validator': {'__parent__': 'import:seps_surround'},
'private_parent': True, 'children': True, 'formatter': 'eval:int'}}}, 'language': {'synonyms': {'ell': ['gr', 'greek'], 'spa': ['esp', 'español', 'espanol'], 'fra': ['français', 'vf', 'vff', 'vfi', 'vfq'],
'swe': ['se'], 'por_BR': ['po', 'pb', 'pob', 'ptbr', 'br', 'brazilian'], 'deu_CH': ['swissgerman', 'swiss german'], 'nld_BE': ['flemish'], 'cat': ['català', 'castellano', 'espanol castellano', 'español
castellano'], 'ces': ['cz'], 'ukr': ['ua'], 'zho': ['cn'], 'jpn': ['jp'], 'hrv': ['scr'], 'mul': ['multi', 'multiple', 'dl']}, 'subtitle_affixes': ['sub', 'subs', 'subtitle', 'subtitles', 'esub', 'esubs',
'subbed', 'custom subbed', 'custom subs', 'custom sub', 'customsubbed', 'customsubs', 'customsub', 'soft subtitles', 'soft subs'], 'subtitle_prefixes': ['st', 'vost', 'subforced', 'fansub', 'hardsub',
'legenda', 'legendas', 'legendado', 'subtitulado', 'soft'], 'subtitle_suffixes': ['subforced', 'fansub', 'hardsub'], 'language_affixes': ['dublado', 'dubbed', 'dub'], 'language_prefixes': ['true'],
'language_suffixes': ['audio'], 'weak_affixes': ['v', 'audio', 'true']}, 'other': {'other': {'Audio Fixed': {'regex': ['Audio-?Fix', 'Audio-?Fixed']}, 'Sync Fixed': {'regex': ['Sync-?Fix', 'Sync-?Fixed']},
'Dual Audio': {'string': ['Dual'], 'regex': ['Dual-?Audio']}, 'Widescreen': {'string': ['ws'], 'regex': ['wide-?screen']}, 'Reencoded': {'regex': ['Re-?Enc(?:oded)?']}, '_repack_with_count': {'regex':
['Repack(?P<proper_count>\\d*)', 'Rerip(?P<proper_count>\\d*)'], 'value': {'other': 'Proper'}, 'tags': ['streaming_service.prefix', 'streaming_service.suffix']}, 'Proper': [{'string': 'Proper', 'tags':
['has-neighbor', 'streaming_service.prefix', 'streaming_service.suffix']}, {'regex': ['Real-Proper', 'Real-Repack', 'Real-Rerip'], 'tags': ['streaming_service.prefix', 'streaming_service.suffix', 'real']},
{'string': 'Real', 'tags': ['has-neighbor', 'streaming_service.prefix', 'streaming_service.suffix', 'real']}], 'Fix': [{'string': ['Fix', 'Fixed'], 'tags': ['has-neighbor-before', 'has-neighbor-after',
'streaming_service.prefix', 'streaming_service.suffix']}, {'string': ['Dirfix', 'Nfofix', 'Prooffix'], 'tags': ['streaming_service.prefix', 'streaming_service.suffix']}, {'regex':
['(?:Proof-?)?Sample-?Fix'], 'tags': ['streaming_service.prefix', 'streaming_service.suffix']}], 'Fan Subtitled': {'string': 'Fansub', 'tags': 'has-neighbor'}, 'Fast Subtitled': {'string': 'Fastsub',
'tags': 'has-neighbor'}, 'Region 5': 'R5', 'Region C': 'RC', 'Preair': {'regex': 'Pre-?Air'}, 'PS Vita': [{'regex': '(?:PS-?)Vita'}, {'string': 'Vita', 'tags': 'has-neighbor'}], '_HdRip': {'value':
{'other': 'HD', 'another': 'Rip'}, 'regex': ['(HD)(?P<another>Rip)'], 'private_parent': True, 'children': True, 'validator': {'__parent__': 'import:seps_surround'}, 'validate_all': True}, 'Screener':
['Screener', {'regex': 'Scr(?:eener)?', 'validator': None, 'tags': ['other.validate.screener', 'source-prefix', 'source-suffix']}], 'Remux': 'Remux', 'Hybrid': 'Hybrid', 'PAL': 'PAL', 'SECAM': 'SECAM',
'NTSC': 'NTSC', 'XXX': 'XXX', '2in1': '2in1', '3D': {'string': '3D', 'tags': 'has-neighbor'}, 'High Quality': {'string': 'HQ', 'tags': 'uhdbluray-neighbor'}, 'High Resolution': 'HR', 'Line Dubbed': 'LD',
'Mic Dubbed': 'MD', 'Micro HD': ['mHD', 'HDLight'], 'Low Definition': 'LDTV', 'High Frame Rate': 'HFR', 'Variable Frame Rate': 'VFR', 'HD': {'string': 'HD', 'validator': None, 'tags':
['streaming_service.prefix', 'streaming_service.suffix']}, 'Full HD': {'string': ['FHD'], 'regex': ['Full-?HD'], 'validator': None, 'tags': ['streaming_service.prefix', 'streaming_service.suffix']}, 'Ultra
HD': {'string': ['UHD'], 'regex': ['Ultra-?(?:HD)?'], 'validator': None, 'tags': ['streaming_service.prefix', 'streaming_service.suffix']}, 'Upscaled': {'regex': 'Upscaled?'}, 'Complete': {'string':
['Complet', 'Complete'], 'tags': ['has-neighbor', 'release-group-prefix']}, 'Classic': {'string': 'Classic', 'tags': ['has-neighbor', 'release-group-prefix']}, 'Bonus': {'string': 'Bonus', 'tags':
['has-neighbor', 'release-group-prefix']}, 'Trailer': {'string': 'Trailer', 'tags': ['has-neighbor', 'release-group-prefix']}, 'Retail': {'string': 'Retail', 'tags': ['has-neighbor',
'release-group-prefix']}, 'Colorized': {'string': 'Colorized', 'tags': ['has-neighbor', 'release-group-prefix']}, 'Internal': {'string': 'Internal', 'tags': ['has-neighbor', 'release-group-prefix']}, 'Line
Audio': {'string': 'LiNE', 'tags': ['has-neighbor-before', 'has-neighbor-after', 'release-group-prefix']}, 'Read NFO': {'regex': 'Read-?NFO'}, 'Converted': {'string': 'CONVERT', 'tags': 'has-neighbor'},
'Documentary': {'string': ['DOCU', 'DOKU'], 'tags': 'has-neighbor'}, 'Open Matte': {'regex': '(?:OM|Open-?Matte)', 'tags': 'has-neighbor'}, 'Straight to Video': {'string': 'STV', 'tags': 'has-neighbor'},
'Original Aspect Ratio': {'string': 'OAR', 'tags': 'has-neighbor'}, 'East Coast Feed': {'regex': '(?:Live-)?(?:Episode-)?East-?(?:Coast-)?Feed'}, 'West Coast Feed': {'regex':
'(?:Live-)?(?:Episode-)?West-?(?:Coast-)?Feed'}, 'Original Video': {'string': ['VO', 'OV'], 'tags': 'has-neighbor'}, 'Original Animated Video': {'string': ['Ova', 'Oav']}, 'Original Net Animation': 'Ona',
'Original Animation DVD': 'Oad', 'Mux': {'string': 'Mux', 'validator': 'import:seps_after', 'tags': ['other.validate.mux', 'video-codec-prefix', 'source-suffix']}, 'Hardcoded Subtitles': ['HC', 'vost'],
'Standard Dynamic Range': {'string': 'SDR', 'tags': 'uhdbluray-neighbor'}, 'HDR10': {'regex': 'HDR(?:10)?', 'tags': 'uhdbluray-neighbor'}, 'Dolby Vision': {'regex': '(?:Dolby-?Vision|DV)', 'tags':
'uhdbluray-neighbor'}, 'BT.2020': {'regex': 'BT-?2020', 'tags': 'uhdbluray-neighbor'}, 'Sample': {'string': 'Sample', 'tags': ['at-end', 'not-a-release-group']}, 'Extras': [{'string': 'Extras', 'tags':
'has-neighbor'}, {'regex': 'Digital-?Extras?'}], 'Proof': {'string': 'Proof', 'tags': ['at-end', 'not-a-release-group']}, 'Obfuscated': {'string': ['Obfuscated', 'Scrambled'], 'tags': ['at-end',
'not-a-release-group']}, 'Repost': {'string': ['xpost', 'postbot', 'asrequested'], 'tags': 'not-a-release-group'}, '_complete_words': {'callable': 'import:guessit.rules.properties.other:complete_words',
'season_words': ['seasons?', 'series?'], 'complete_article_words': ['The']}}}, 'part': {'prefixes': ['pt', 'part']}, 'release_group': {'forbidden_names': ['bonus', 'by', 'for', 'par', 'pour', 'rip'],
'ignored_seps': '[]{}()'}, 'screen_size': {'frame_rates': ['23\\.976', '24(?:\\.0{1,3})?', '25(?:\\.0{1,3})?', '29\\.970', '30(?:\\.0{1,3})?', '48(?:\\.0{1,3})?', '50(?:\\.0{1,3})?', '60(?:\\.0{1,3})?',
'120(?:\\.0{1,3})?'], 'min_ar': 1.333, 'max_ar': 1.898, 'interlaced': ['360', '480', '540', '576', '900', '1080'], 'progressive': ['360', '480', '540', '576', '900', '1080', '368', '720', '1440', '2160',
'4320']}, 'source': {'rip_prefix': '(?P<other>Rip)-?', 'rip_suffix': '-?(?P<other>Rip)'}, 'website': {'safe_tlds': ['com', 'net', 'org'], 'safe_subdomains': ['www'], 'safe_prefixes': ['co', 'com', 'net',
'org'], 'prefixes': ['from']}, 'streaming_service': {'9Now': '9NOW', 'A&E': ['AE', 'A&E'], 'ABC': 'AMBC', 'ABC Australia': 'AUBC', 'Al Jazeera English': 'AJAZ', 'AMC': 'AMC', 'Amazon Prime': ['AMZN',
'AMZN-CBR', 'Amazon', 're:Amazon-?Prime'], 'Adult Swim': ['AS', 're:Adult-?Swim'], "America's Test Kitchen": 'ATK', 'Animal Planet': 'ANPL', 'AnimeLab': 'ANLB', 'AOL': 'AOL', 'AppleTV': ['ATVP', 'ATV+',
'APTV'], 'ARD': 'ARD', 'BBC iPlayer': ['iP', 're:BBC-?iPlayer'], 'Binge': 'BNGE', 'Blackpills': 'BKPL', 'BluTV': 'BLU', 'Boomerang': 'BOOM', 'Disney+': 'DSNP', 'BravoTV': 'BRAV', 'Canal+': 'CNLP', 'Cartoon
Network': 'CN', 'CBC': 'CBC', 'CBS': 'CBS', 'CNBC': 'CNBC', 'Comedy Central': ['CC', 're:Comedy-?Central'], 'Channel 4': ['ALL4', '4OD'], 'CHRGD': 'CHGD', 'Cinemax': 'CMAX', 'Country Music Television':
'CMT', 'Comedians in Cars Getting Coffee': 'CCGC', 'Crave': 'CRAV', 'Crunchy Roll': ['CR', 're:Crunchy-?Roll'], 'Crackle': 'CRKL', 'CSpan': 'CSPN', 'CTV': 'CTV', 'CuriosityStream': 'CUR', 'CWSeed': 'CWS',
'Daisuki': 'DSKI', 'DC Universe': 'DCU', 'Deadhouse Films': 'DHF', 'DramaFever': ['DF', 'DramaFever'], 'Digiturk Diledigin Yerde': 'DDY', 'Discovery': ['DISC', 'Discovery'], 'Discovery Plus': 'DSCP',
'Disney': ['DSNY', 'Disney'], 'DIY Network': 'DIY', 'Doc Club': 'DOCC', 'DPlay': 'DPLY', 'E!': 'ETV', 'ePix': 'EPIX', 'El Trece': 'ETTV', 'ESPN': 'ESPN', 'Esquire': 'ESQ', 'Facebook Watch': 'FBWatch',
'Family': 'FAM', 'Family Jr': 'FJR', 'Fandor': 'FANDOR', 'Food Network': 'FOOD', 'Fox': 'FOX', 'Fox Premium': 'FOXP', 'Foxtel': 'FXTL', 'Freeform': 'FREE', 'FYI Network': 'FYI', 'GagaOOLala': 'Gaga',
'Global': 'GLBL', 'GloboSat Play': 'GLOB', 'Hallmark': 'HLMK', 'HBO Go': ['HBO', 're:HBO-?Go'], 'HBO Max': 'HMAX', 'HGTV': 'HGTV', 'History': ['HIST', 'History'], 'Hulu': 'HULU', 'Investigation Discovery':
'ID', 'IFC': 'IFC', 'hoichoi': 'HoiChoi', 'iflix': 'IFX', 'iQIYI': 'iQIYI', 'iTunes': ['iTunes', {'pattern': 'iT', 'ignore_case': False}], 'ITV': 'ITV', 'Knowledge Network': 'KNOW', 'Lifetime': 'LIFE',
'Motor Trend OnDemand': 'MTOD', 'MBC': ['MBC', 'MBCVOD'], 'MSNBC': 'MNBC', 'MTV': 'MTV', 'MUBI': 'MUBI', 'National Audiovisual Institute': 'INA', 'National Film Board': 'NFB', 'National Geographic':
['NATG', 're:National-?Geographic'], 'NBA TV': ['NBA', 're:NBA-?TV'], 'NBC': 'NBC', 'Netflix': ['NF', 'Netflix'], 'NFL': 'NFL', 'NFL Now': 'NFLN', 'NHL GameCenter': 'GC', 'Nickelodeon': ['NICK',
'Nickelodeon', 'NICKAPP'], 'Norsk Rikskringkasting': 'NRK', 'OnDemandKorea': ['ODK', 'OnDemandKorea'], 'Opto': 'OPTO', 'Oprah Winfrey Network': 'OWN', 'Paramount+': ['PMTP', 'PMNP', 'PMT+', 'Paramount+',
'ParamountPlus'], 'PBS': 'PBS', 'PBS Kids': 'PBSK', 'Peacock': ['PCOK', 'Peacock'], 'Playstation Network': 'PSN', 'Pluzz': 'PLUZ', 'PokerGO': 'POGO', 'Rakuten TV': 'RKTN', 'The Roku Channel': 'ROKU', 'RTE
One': 'RTE', 'RUUTU': 'RUUTU', 'SBS': 'SBS', 'Science Channel': 'SCI', 'SeeSo': ['SESO', 'SeeSo'], 'Shomi': 'SHMI', 'Showtime': 'SHO', 'Sony': 'SONY', 'Spike': 'SPIK', 'Spike TV': ['SPKE', 're:Spike-?TV'],
'Sportsnet': 'SNET', 'Sprout': 'SPRT', 'Stan': 'STAN', 'Starz': 'STZ', 'Sveriges Television': 'SVT', 'SwearNet': 'SWER', 'Syfy': 'SYFY', 'TBS': 'TBS', 'TFou': 'TFOU', 'The CW': ['CW', 're:The-?CW'], 'TLC':
'TLC', 'TubiTV': 'TUBI', 'TV3 Ireland': 'TV3', 'TV4 Sweeden': 'TV4', 'TVING': 'TVING', 'TV Land': ['TVL', 're:TV-?Land'], 'TVNZ': 'TVNZ', 'UFC': 'UFC', 'UFC Fight Pass': 'FP', 'UKTV': 'UKTV', 'Univision':
'UNIV', 'USA Network': 'USAN', 'Velocity': 'VLCT', 'VH1': 'VH1', 'Viceland': 'VICE', 'Viki': 'VIKI', 'Vimeo': 'VMEO', 'VRV': 'VRV', 'W Network': 'WNET', 'WatchMe': 'WME', 'WWE Network': 'WWEN', 'Xbox
Video': 'XBOX', 'Yahoo': 'YHOO', 'YouTube Red': 'RED', 'ZDF': 'ZDF'}, 'date': {'week_words': ['week']}}, 'excludes': ['country', 'language']}
--------------------------------------------------------------------
Traceback (most recent call last):
  File "/venv/lib/python3.12/site-packages/guessit/api.py", line 209, in guessit
    matches = self.rebulk.matches(string, options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/rebulk/rebulk.py", line 113, in matches
    self._matches_patterns(matches, context)
  File "/venv/lib/python3.12/site-packages/rebulk/rebulk.py", line 176, in _matches_patterns
    pattern_matches = pattern.matches(matches.input_string, context)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/rebulk/pattern.py", line 161, in matches
    for match in self._match(pattern, input_string, context):
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/rebulk/pattern.py", line 505, in _match
    ret = call(pattern, input_string, context, **self._kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/rebulk/loose.py", line 60, in call
    return function(*call_args, **call_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/guessit/rules/markers/path.py", line 35, in mark_path
    indices = list(find_all(input_string, '/'))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.12/site-packages/rebulk/utils.py", line 49, in find_all
    start = string.find(sub, start, end)
            ^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'find'
--------------------------------------------------------------------

I feel that throwing None should result in an immediate ValueError (or TypeError), instead of giving a very cryptic error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions