3 ."Ιd³γ@s ddlZddlmZGdd„deƒZGdd„deƒZGdd „d eƒZGd d „d eƒZGd d „d eƒZGdd„deƒZGdd„deƒZ dd„Z dd„Z dd„Z dS)ιNι)ΪPolicySyntaxErrorc@s eZdZdS)ΪScopeSyntaxErrorN)Ϊ__name__Ϊ __module__Ϊ __qualname__©rrϊE./usr/share/crypto-policies/python/cryptopolicies/validation/scope.pyr srcseZdZ‡fdd„Z‡ZS)ΪScopeUnknownErrorcstƒjd|›ƒdS)Nzunknown scope )ΪsuperΪ__init__)ΪselfZ scope_glob)Ϊ __class__rr r szScopeUnknownError.__init__)rrrr Ϊ __classcell__rr)rr r sr cseZdZ‡fdd„Z‡ZS)ΪScopeSelectorEmptyErrorcstƒjdƒdS)Nzempty scope selector)r r )r )rrr r sz ScopeSelectorEmptyError.__init__)rrrr rrr)rr rsrcseZdZ‡fdd„Z‡ZS)Ϊ"ScopeSelectorIllegalCharacterErrorcstƒjd|›dƒdS)Nz%illegal character in scope selector `ϊ`)r r )r Zselector)rrr r sz+ScopeSelectorIllegalCharacterError.__init__)rrrr rrr)rr rsrcseZdZ‡fdd„Z‡ZS)ΪScopeSelectorCurlyBracketsErrorcstƒjd|›dƒdS)Nz%unsupported curly brackets usage in `r)r r )r Ϊpattern)rrr r sz(ScopeSelectorCurlyBracketsError.__init__)rrrr rrr)rr rsrcseZdZ‡fdd„Z‡ZS)ΪScopeSelectorCommaErrorcstƒjd|›dƒdS)Nzunsupported comma usage in `r)r r )r r)rrr r #sz ScopeSelectorCommaError.__init__)rrrr rrr)rr r"srcseZdZ‡fdd„Z‡ZS)Ϊ ScopeSelectorMatchedNothingErrorcstƒjd|›dƒdS)Nzscope selector `z` matches no scope)r r )r r)rrr r (sz)ScopeSelectorMatchedNothingError.__init__)rrrr rrr)rr r'srcCstdd„|Dƒƒst|ƒ‚dS)Ncss|]}|jƒp|dkVqdS)z{,}*_-N)Ϊisalnum)Ϊ.0Ϊcrrr ϊ -sz%illegal_characters..)Ϊallr)ΪpΪoriginal_patternrrr Ϊillegal_characters,srcCsP|jdƒ|jdƒfdksD|jdƒr.|jdƒ sD|jdƒ rL|jdƒrLt|ƒ‚dS)Nϊ{ϊ}rr©rr©rr)r!r")ΪcountΪ startswithΪendswithr)rrrrr Ϊcurly_brackets1sr&cCsZtdd„|Dƒƒrt|ƒ‚x:|D]2}|s.tƒ‚tj||ƒs d|krJt|ƒ‚t|ƒ‚q WdS)Ncss|]}d|kVqdS)ϊ,Nr)rΪgrrr r9sz"resulting_globs..Ϊ*)ΪanyrrΪfnmatchΪfilterrr )ZglobsZ all_scopesrr(rrr Ϊresulting_globs8s  r-) r+Zgeneralrrr rrrrrrr&r-rrrr Ϊs