B
    è¹`  ã               @   s,   d dl mZ d dlmZ dd„ Zdd„ ZdS )é    )Úwraps)Ú"call_app_with_subpath_as_path_infoc                sB   ˆ dkrt dƒ‚‡ fdd„}tˆ ddƒr4tˆ ƒ|ƒS tˆ dƒ|ƒS )aë  Decorator to turn a WSGI application into a :app:`Pyramid`
    :term:`view callable`.  This decorator differs from the
    :func:`pyramid.wsgi.wsgiapp2` decorator inasmuch as fixups of
    ``PATH_INFO`` and ``SCRIPT_NAME`` within the WSGI environment *are
    not* performed before the application is invoked.

    E.g., the following in a ``views.py`` module::

      @wsgiapp
      def hello_world(environ, start_response):
          body = 'Hello world'
          start_response('200 OK', [ ('Content-Type', 'text/plain'),
                                     ('Content-Length', len(body)) ] )
          return [body]

    Allows the following call to
    :meth:`pyramid.config.Configurator.add_view`::

        from views import hello_world
        config.add_view(hello_world, name='hello_world.txt')

    The ``wsgiapp`` decorator will convert the result of the WSGI
    application to a :term:`Response` and return it to
    :app:`Pyramid` as if the WSGI app were a :app:`Pyramid`
    view.

    Nzwrapped can not be Nonec                s
   |  ˆ ¡S )N)Zget_response)ÚcontextÚrequest)Úwrapped© úT/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pyramid/wsgi.pyÚ	decorator&   s    zwsgiapp.<locals>.decoratorÚ__name__)Ú
__module__Ú__doc__)Ú
ValueErrorÚgetattrr   )r   r	   r   )r   r   Úwsgiapp   s    r   c                sB   ˆ dkrt dƒ‚‡ fdd„}tˆ ddƒr4tˆ ƒ|ƒS tˆ dƒ|ƒS )a‰  Decorator to turn a WSGI application into a :app:`Pyramid`
    view callable.  This decorator differs from the
    :func:`pyramid.wsgi.wsgiapp` decorator inasmuch as fixups of
    ``PATH_INFO`` and ``SCRIPT_NAME`` within the WSGI environment
    *are* performed before the application is invoked.

    E.g. the following in a ``views.py`` module::

      @wsgiapp2
      def hello_world(environ, start_response):
          body = 'Hello world'
          start_response('200 OK', [ ('Content-Type', 'text/plain'),
                                     ('Content-Length', len(body)) ] )
          return [body]

    Allows the following call to
    :meth:`pyramid.config.Configurator.add_view`::

        from views import hello_world
        config.add_view(hello_world, name='hello_world.txt')

    The ``wsgiapp2`` decorator will convert the result of the WSGI
    application to a Response and return it to :app:`Pyramid` as if the WSGI
    app were a :app:`Pyramid` view.  The ``SCRIPT_NAME`` and ``PATH_INFO``
    values present in the WSGI environment are fixed up before the
    application is invoked.  In particular, a new WSGI environment is
    generated, and the :term:`subpath` of the request passed to ``wsgiapp2``
    is used as the new request's ``PATH_INFO`` and everything preceding the
    subpath is used as the ``SCRIPT_NAME``.  The new environment is passed to
    the downstream WSGI application.Nzwrapped can not be Nonec                s
   t |ˆ ƒS )N)r   )r   r   )r   r   r   r	   R   s    zwsgiapp2.<locals>.decoratorr
   )r   r   )r   r   r   )r   r	   r   )r   r   Úwsgiapp2/   s     r   N)Ú	functoolsr   Zpyramid.requestr   r   r   r   r   r   r   Ú<module>   s   )