4V=jfddlmZddlmZddlZddlmZd d Z Gd d ee e fZ dS) ) annotationsN) CallbackDictkeystrreturnt.Anyc@tfdfdfddS)zReturn a new property object for a content security policy header. Useful if you want to add support for a csp extension in a subclass. c.|SN) _get_valuexrs IC:\PYTHON\_runtimes\venv\Lib\site-packages\werkzeug/datastructures/csp.pyzcsp_property..!,,s##c0||Sr ) _set_value)rvrs rrzcsp_property..sQ\\#q))rc.|Sr ) _del_valuers rrzcsp_property..rrz accessor for )property)rs`r csp_propertyr sF ####))))####   rc|eZdZUdZedZded<edZded<edZded<ed Z ded <ed Z ded <ed Z ded<edZ ded<edZ ded<edZded<edZded<edZded<edZded<edZded<edZded<edZded <ed!Zded"<ed#Zded$<ed%Zded%<ed&Zded'<ed(Zded)<ed*Zded+<ed,Zded-<ed.Zded/<ed0Zded1<ed2Zded3< dFdGfd< ZdHd?Z dIdAZ!dJdBZ"dKdCZ#dKdDZ$dKdEZ%xZ&S)LContentSecurityPolicyaVSubclass of a dict that stores values for a Content Security Policy header. It has accessors for all the level 3 policies. Because the csp directives in the HTTP header use dashes the python descriptors use underscores for that. To get a header of the :class:`ContentSecurityPolicy` object again you can convert the object into a string or call the :meth:`to_header` method. If you plan to subclass it and add your own items have a look at the sourcecode for that class. .. versionadded:: 1.0.0 Support for Content Security Policy headers was added. zbase-uri str | Nonebase_uriz child-src child_srcz connect-src connect_srcz default-src default_srczfont-srcfont_srcz form-action form_actionzframe-ancestorsframe_ancestorsz frame-src frame_srczimg-srcimg_srcz manifest-src manifest_srcz media-src media_srcz navigate-to navigate_toz object-src object_srcz prefetch-src prefetch_srcz plugin-types plugin_typesz report-to report_toz report-uri report_urisandboxz script-src script_srczscript-src-attrscript_src_attrzscript-src-elemscript_src_elemz style-src style_srczstyle-src-attrstyle_src_attrzstyle-src-elemstyle_src_elemz worker-src worker_srcNvalues>cabc.Mapping[str, str] | cabc.Iterable[tuple[str, str]] | None on_update3cabc.Callable[[ContentSecurityPolicy], None] | NonerNonec^t|||du|_dSr )super__init__provided)selfr8r: __class__s rr?zContentSecurityPolicy.__init__As/ +++d* rrrc,||S)+Used internally by the accessor properties.)getrArs rr z ContentSecurityPolicy._get_valueIsxx}}rvaluecD|||ddS|||<dSrDN)pop)rArrGs rrz ContentSecurityPolicy._set_valueMs. = HHS$     DIIIrc||vr||=dSdSrIr7rFs rrz ContentSecurityPolicy._del_valueTs $;;S  ;rc$ddlm}||S)z6Convert the stored values into a cache control header.)dump_csp_header)httprN)rArNs r to_headerzContentSecurityPolicy.to_headerYs$******t$$$rc*|Sr )rP)rAs r__str__zContentSecurityPolicy.__str___s~~rcddt|D}dt|jd|dS)N c3*K|]\}}|d|VdS)=Nr7).0krs r z1ContentSecurityPolicy.__repr__..cs0HH41aQ,,,,HHHHHHr<>)joinsorteditemstype__name__)rAkv_strs r__repr__zContentSecurityPolicy.__repr__bsTHH6$**,,3G3GHHHHH24::&222222r)r7N)r8r9r:r;rr<)rrrr)rrrGrrr<)rrrr<)rr)'r` __module__ __qualname____doc__rr__annotations__rr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r?r rrrPrRrb __classcell__)rBs@rrrsz (< 33H3333(L55I5555*l=99K9999*l=99K9999'< 33H3333*l=99K9999".,/@"A"AOAAAA(L55I5555&,y11G1111+|N;;L;;;;(L55I5555*l=99K9999)\,77J7777+|N;;L;;;;+|N;;L;;;;(L55I5555)\,77J7777&,y11G1111)\,77J7777".,/@"A"AOAAAA".,/@"A"AOAAAA(L55I5555!-.>!?!?N????!-.>!?!?N????)\,77J7777RTIM+++++++ %%%%     33333333rr)rrrr ) __future__rcollections.abcabccabctypingt structuresrrrrr7rrros""""""$$$$$$    N3N3N3N3N3Lc2N3N3N3N3N3r