Ë
    ÚŠ±j*
  ã                  ól   — d Z ddlmZ ddlZej
                  rddlmZ ddlmZ ddlm	Z	  G d„ d«      Z
y)	aY  
Application Dispatcher
======================

This middleware creates a single WSGI application that dispatches to
multiple other WSGI applications mounted at different URL paths.

A common example is writing a Single Page Application, where you have a
backend API and a frontend written in JavaScript that does the routing
in the browser rather than requesting different pages from the server.
The frontend is a single HTML and JS file that should be served for any
path besides "/api".

This example dispatches to an API app under "/api", an admin app
under "/admin", and an app that serves frontend files for all other
requests::

    app = DispatcherMiddleware(serve_frontend, {
        '/api': api_app,
        '/admin': admin_app,
    })

In production, you might instead handle this at the HTTP server level,
serving files or proxying to application servers based on location. The
API and admin apps would each be deployed with a separate WSGI server,
and the static files would be served directly by the HTTP server.

.. autoclass:: DispatcherMiddleware

:copyright: 2007 Pallets
:license: BSD-3-Clause
é    )ÚannotationsN)ÚStartResponse)ÚWSGIApplication)ÚWSGIEnvironmentc                  ó:   — e Zd ZdZ	 d	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zy)ÚDispatcherMiddlewareaJ  Combine multiple applications as a single WSGI application.
    Requests are dispatched to an application based on the path it is
    mounted under.

    :param app: The WSGI application to dispatch to if the request
        doesn't match a mounted path.
    :param mounts: Maps path prefixes to applications for dispatching.
    Nc                ó(   — || _         |xs i | _        y ©N)ÚappÚmounts)Úselfr   r   s      úc/var/www/io.vulcan-creative.com/venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.pyÚ__init__zDispatcherMiddleware.__init__6   s   € ð
 ˆŒØ’l ˆ�ó    c                óL  — |j                  dd«      }d}d|v r?|| j                  v r| j                  |   }nG|j                  dd«      \  }}d|› |› �}d|v rŒ?| j                  j                  || j                  «      }|j                  dd«      }||z   |d<   ||d<    |||«      S )NÚ	PATH_INFOÚ ú/é   ÚSCRIPT_NAME)Úgetr   Úrsplitr   )r   ÚenvironÚstart_responseÚscriptÚ	path_infor   Ú	last_itemÚoriginal_script_names           r   Ú__call__zDispatcherMiddleware.__call__>   s¼   € ð —‘˜[¨"Ó-ˆØˆ	à�V‰mØ˜Ÿ™Ñ$Ø—k‘k &Ñ)�Øà &§¡¨c°1Ó 5ÑˆF�IØ˜I˜; y kÐ2ˆIð �VŠmð —+‘+—/‘/ &¨$¯(©(Ó3ˆCà&Ÿ{™{¨=¸"Ó=ÐØ!5¸Ñ!>ˆ�ÑØ(ˆ�ÑÙ�7˜NÓ+Ð+r   r
   )r   r   r   z!dict[str, WSGIApplication] | NoneÚreturnÚNone)r   r   r   r   r    zt.Iterable[bytes])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   ,   sJ   „ ñð 59ð#àð#ð 2ð#ð 
ó	#ð,Ø&ð,Ø8Eð,à	ô,r   r   )r%   Ú
__future__r   ÚtypingÚtÚTYPE_CHECKINGÚ_typeshed.wsgir   r   r   r   r&   r   r   ú<module>r,      s-   ðñõB #ã à‡?‚?Ý,Ý.Ý.÷%,ò %,r   