
    ^h                       S r SSKJr  SSKrSSKrSSKrSSKrSSKJ	r	J
r
JrJrJr  SSKJr  SSKJrJrJr  SSKJr   " S	 S
\R,                  5      r " S S\5      rS r\S:X  a  SSKr\" \R8                  S   5        gg)z4PostProcessor for serving reveal.js HTML slideshows.    )annotationsN)gen
httpserveriolooplogweb)AsyncHTTPClient)BoolIntUnicode   )PostProcessorBasec                  <    \ rS rSrSr\R                  S 5       rSrg)ProxyHandler   z9handler the proxies requests from a local prefix to a CDNc              #  6  #    SR                  U R                  S   U/5      nU R                  S   nUR                  U5      v nS H2  nXeR                  ;   d  M  U R	                  XeR                  U   5        M4     U R                  UR                  5        g7f)zproxy a request to a CDN/cdnclient)zContent-TypezCache-ControlDatezLast-ModifiedExpiresN)joinsettingsfetchheaders
set_headerfinishbody)selfprefixurl	proxy_urlr   responseheaders          X/home/james-whalen/.local/lib/python3.13/site-packages/nbconvert/postprocessors/serve.pygetProxyHandler.get   s      HHdmmE2C89	x(i00[F)))(8(8(@A \ 	HMM"s   AB>B N)	__name__
__module____qualname____firstlineno____doc__r   	coroutiner&   __static_attributes__r(       r%   r   r      s    C]]	# 	#r0   r   c                     \ rS rSrSr\" SSS9R                  SS9r\" SSS9R                  SS9r	\" S	S
S9R                  SS9r
\" SSS9R                  SS9r\" SSS9R                  SS9r\" SSS9R                  SS9rS rSrg)ServePostProcessor#   zmPost processor designed to serve files

Proxies reveal.js requests to a CDN if no local reveal.js is present
Tz+Should the browser be opened automatically?)help)config a  Specify what browser should be used to open slides. See
                      https://docs.python.org/3/library/webbrowser.html#webbrowser.register
                      to see how keys are mapped to browser executables. If
                      not specified, the default browser will be determined
                      by the `webbrowser`
                      standard library module, which allows setting of the BROWSER
                      environment variable to override it.
                      z6https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0zURL for reveal.js CDN.z	reveal.jszURL prefix for reveal.jsz	127.0.0.1zThe IP address to listen on.i@  z!port for the server to listen on.c                  ^	^
 [         R                  R                  U5      u  p#S[        R                  SU04S[        R
                  SSU-  04/nSU R                  ;   d   U R                  R                  S5      (       a  O[         R                  R                  [         R                  R                  X R                  5      5      (       a'  U R                  R                  SU R                  5        OVU R                  R                  S	U R                  U R                  5        UR                  S
SU R                  -  [        45        [        R                  " UU R                  [!        5       S9nU R                  [        l        [$        R&                  " U5      nUR)                  U R*                  U R,                  S9  SU R,                  U R*                  U4-  m
[/        ST
-  5        [/        S5        U R0                  (       aS   [2        R4                  " U R6                  =(       d    S5      m	U	U
4S jn[8        R:                  " US9R=                  5          [B        RD                  RG                  5       R=                  5         g! [2        R>                   a(  nU R                  RA                  SU5        Sm	 SnANeSnAff = f! [H         a    [/        S5         gf = f)z+Serve the build directory with a webserver.z/(.+)pathr   r!   z/%sz://z//zServing local %szRedirecting %s requests to %sr   z
/(%s)/(.*))r   r   )addresszhttp://%s:%i/%szServing your slides at %sz!Use Control-C to stop this serverNc                 $   > T R                  TSS9$ )N   )new)open)browserr!   s   r%   <lambda>0ServePostProcessor.postprocess.<locals>.<lambda>c   s    GLL!L4r0   )targetzNo web browser found: %s.z
Interrupted)%osr8   splitr   StaticFileHandlerRedirectHandlerreveal_prefix
startswithisdirr   r   info
reveal_cdninsertr   Applicationr	   app_logr   
HTTPServerlistenportipprintopen_in_browser
webbrowserr&   r>   	threadingThreadstartErrorwarningr   IOLoopinstanceKeyboardInterrupt)r   inputdirnamefilenamehandlersapphttp_serverber>   r!   s            @@r%   postprocessServePostProcessor.postprocess@   s"   GGMM%0s,,vw.?@3&&0@(AB-

 D&&&$*<*<*G*G*M*MWW]]277<<1C1CDEEHHMM,d.@.@AHHMM94;M;Mt_OOA0B0B BLQRoo"$
 hh ++C0499dgg6477DIIx"@@)C/012$..)=>4  *002
	#MM""$**, ##   !<a@ ! 	#/"	#s+   AJ ,K KJ??KKKr(   N)r)   r*   r+   r,   r-   r
   tagrS   r   r>   rJ   rF   rQ   r   rP   re   r/   r(   r0   r%   r2   r2   #   s    
 4&WX\\ ] O 

 
cc  @Gc	cc  K.HIMMUYMZM	#A	B	F	Fd	F	SBt=>BB$BOD,#r0   r2   c                (    [        5       nU" U 5        g)z-allow running this module to serve the slidesN)r2   )r8   servers     r%   mainrj   o   s    !F
4Lr0   __main__)r-   
__future__r   rB   rU   typingtrT   tornador   r   r   r   r   tornado.httpclientr	   	traitletsr
   r   r   baser   RequestHandlerr   r2   rj   r)   sysargvr(   r0   r%   <module>rv      st    : # 	    5 5 . ( ( ##3%% # I#* I#X z! r0   