
    A6i}                     *    d Z ddlmZ  G d de      Zy)z
.. module:: lesscpy.plib.deferred
    :synopsis: Deferred mixin call.

    Copyright (c)
    See LICENSE for details.
.. moduleauthor:: Johann T. Mariusson <jtm@robot.is>
   )Nodec                   "    e Zd ZddZddZd Zy)Deferredc                 $    ||g| _         || _        y)a  This node represents mixin calls. The calls
        to these mixins are deferred until the second
        parse cycle. lessc.js allows calls to mixins not
        yet defined or known.
        args:
            mixin (Mixin): Mixin object
            args (list): Call arguments
        N)tokenslineno)selfmixinargsr   s       X/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/lesscpy/plib/deferred.py__init__zDeferred.__init__   s     dm    c                    d}| j                   \  }}|j                  |       |j                  |j                               }|s0|j                  d       |j                  |j                               }|dkD  rt	        d|j                  d      z        |s|j
                  r|j
                  j                  d   D cg c]  }| }	}d}
|j
                  j                  d   r|j
                  |_        |j                  |       |j                  |j                               }d|_        |s|
dkD  rnF|j
                  j                  d   j                          |
dz  }
|j
                  j                  d   r|	|j
                  j                  d<   |s|j                  |j                               }|s0|j                  d       |j                  |j                               }|r:|j                  r|j                  d   nd|_        |j                  |      }d|_        |ro|D ]j  }|j                  r|j                  d   nd|_        |j                  ||      }|s:|j                  D cg c]  }|j                  |       c} ||_         n |r|j
                  r'|j
                  j                  d   D cg c]  }| c}nd}	g }|D ][  }|st        |t               r&|j#                  |j                  ||dz   	             <|j#                  |j                  |             ] |}t%        d
 |D              r4|D cg c]  }|s|j                  |       }}t%        d
 |D              r4|	r|	|j
                  j                  d<   |r|st	        d|j                  d      z        |S c c}w c c}w c c}w c c}w )aI   Parse function. We search for mixins
        first within current scope then fallback
        to global scope. The special scope.deferred
        is used when local scope mixins are called
        within parent mixins.
        If nothing is found we fallback to block-mixin
        as lessc.js allows calls to blocks and mixins to
        be inter-changable.
        clx: This method is a HACK that stems from
        poor design elsewhere. I will fix it
        when I have more time.
        args:
            scope (Scope): Current scope
        returns:
            mixed
        FN@   zNameError `%s`T    r   )depthc              3   B   K   | ]  }t        |t              s|  y w)N)
isinstancer   ).0ts     r   	<genexpr>z!Deferred.parse.<locals>.<genexpr>h   s     AQAx)@qAs   )r   parsemixinsrawSyntaxErrordeferredparsedcurrentpopblocksreal
copy_innercallvarsadd_variabler   r   appendany)r	   scopeerrorr   residentr   r   r   storeiblockr
   vtmp_resps                   r   r   zDeferred.parse   s3   " kktEeiik*KK\\%))+.F2:.4@AA~~$)NN$9$9"$=>q>>nn++B/$)NNEMKK&"\\%))+6F$(EMRNN))"-113FA nn++B/ -2%%b)LL-ED!UYY[127**

2$&&u- $ 27**

2$jj- 5:JJ?qU''*?%*EN .. !& 5 5b 9 1Q .3 G 7!!X.qwwuEAIw'FGqwwu~67 CA#AA/28!aqwwu~88 A#AA,1%%b).4@AA
m ?> @
 9s   ?	N3/N8=	N=OOc                     | S )z] Returns self (used when Block objects are copy'd)
        returns:
            self
         )r	   s    r   copyzDeferred.copyq   s	    
 r   N)r   )Fr   )__name__
__module____qualname__r   r   r5   r4   r   r   r   r      s    
Unr   r   N)__doc__noder   r   r4   r   r   <module>r;      s    it ir   