
    kKj                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZ eeez  eez  egef   Z	 	 d
	 	 	 	 	 	 	 	 	 ddZ	 	 d
	 	 	 	 	 	 	 	 	 dd	Zy)zJupyterLab command handler.    )annotationsN)Callable)Any   )Rangegtgteltltec                0    t        | |||      }|y|dk(  S )zTest whether two version specs overlap.

    Returns `None` if we cannot determine compatibility,
    otherwise whether there is an overlap
    )drop_prerelease1drop_prerelease2Nr   )_compare_ranges)spec1spec2r   r   cmps        i/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/jupyter_builder/commands.py_test_overlapr      s-     ))	C {!8O    c                   t        | d      }t        |d      }|j                  r|j                  syd}t        j                  |j                  |j                        D ]  \  }}|d   j
                  }	|d   j
                  }
|d   j
                  }|d   j
                  }|	j                  r|r|	j                  d      }	|j                  r|r|j                  d      }|d   j                  }|d   j                  }|j                  d      s|j                  d      r|	|
k(  rt        nt        }||k(  rt        nt        }|	|
k(  rt        nt        }|	|
k(  rt        nt        }dd}|	|
k(  r|j                  d	      r|}||k(  r|j                  d	      r|}t        |	|d      r
 ||	|d      s? ||
|d      r
 ||
|d      s+t        ||	d      r
 |||
d      s |||	d      r |||
d      r yt        ||
d      r|du rd
}n|dk(  rd}t        |	|d      r|du rd}n|d
k(  rd}d}t        |       |du rd}|S )zTest whether two version specs overlap.

    Returns `None` if we cannot determine compatibility,
    otherwise return 0 if there is an overlap, 1 if
    spec1 is lower/older than spec2, and -1 if spec1
    is higher/newer than spec2.
    TNFr   patch<c                     y)z=Return True unconditionally, representing an unbounded range.T )_x_y_zs      r   noopz_compare_ranges.<locals>.noop[   s    r   >r   z(Unexpected case comparing version ranges)r   	str | Anyr   r!   r   boolreturnr"   )r   range	itertoolsproductsetsemver
prereleaseincoperator
startswithr   r
   r	   r   AssertionError)r   r   r   r   r1r2return_valuer1setr2setx1x2y1y2o1o2lxlygxgyr   msgs                        r   r   r   '   sA    
ud	B	ud	B 88288 ',L "))"&&"&&9u1X__2Y1X__2Y==-B==-B1X1X ==s!3 "HS""HS""HS""HS"	 8c*B8c*B R2b"d#32r4 RB%5BD!bR&62r4 RB%5 r2tu$ ##r2tu$!"#8S!! :B ur   )FF)
r   strr   r>   r   r"   r   r"   r#   zbool | None)
r   r>   r   r>   r   r"   r   r"   r#   z
int | None)__doc__
__future__r   r%   collections.abcr   typingr   jupyterlab_semverr   r   r	   r
   r   r>   r"   _CmpFnr   r   r   r   r   <module>rE      s    !
 #  $  6 6	39cCi.4	5 #"	  	
 2 #"	]]] ] 	]
 ]r   