3

T'íc£
ã@sRdZddlZddlZddlmZmZmZGdd„dƒZeeeeedœdd„Z	dS)	zSphinx test comparer for pytestéN)ÚAnyÚListÚUnionc@sÒeZdZdZeeejfdœdd„Zedœdd„Z	edœdd	„Z
eeejfed
œdd„Zeeejfe
ed
œd
d„Zeeejfe
ed
œdd„Zeeejfe
ed
œdd„Zejeje
edœdd„ZdS)ÚPathComparera©
    OS-independent path comparison.

    Windows path sep and posix path sep:

    >>> '\to\index' == PathComparer('/to/index')
    True
    >>> '\to\index' == PathComparer('/to/index2')
    False

    Windows path with drive letters

    >>> 'C:\to\index' == PathComparer('/to/index')
    True
    >>> 'C:\to\index' == PathComparer('C:/to/index')
    True
    >>> 'C:\to\index' == PathComparer('D:/to/index')
    False
    )ÚpathcCstj|ƒ|_dS)zP
        :param str path: path string, it will be cast as pathlib.Path.
        N)ÚpathlibÚPathr)Úselfr©r
ú9/tmp/pip-build-gk9425m9/sphinx/sphinx/testing/comparer.pyÚ__init__szPathComparer.__init__)ÚreturncCs
|jjƒS)N)rÚas_posix)r	r
r
rÚ__str__!szPathComparer.__str__cCs
dj|ƒS)Nz<{0.__class__.__name__}: '{0}'>)Úformat)r	r
r
rÚ__repr__$szPathComparer.__repr__)Úotherr
cCst|j|ƒƒS)N)ÚboolÚldiff)r	rr
r
rÚ__eq__'szPathComparer.__eq__cCs
|j|ƒS)a‡compare self and other.

        When different is not exist, return empty list.

        >>> PathComparer('/to/index').diff('C:\to\index')
        []

        When different is exist, return unified diff style list as:

        >>> PathComparer('/to/index').diff('C:\to\index2')
        [
           '- C:/to/index'
           '+ C:/to/index2'
           '?            +'
        ]
        )r)r	rr
r
rÚdiff*szPathComparer.diffcCs|j|jtj|ƒƒS)N)Ú_diffrrr)r	rr
r
rr=szPathComparer.ldiffcCs|jtj|ƒ|jƒS)N)rrrr)r	rr
r
rÚrdiffCszPathComparer.rdiff)ÚlhsÚrhsr
cCsp||krgS|js|jr4|jƒjƒ|jƒjƒ}}n|jƒ|jƒ}}||krRgSdd„tjƒj|g|gƒDƒS)NcSsg|]}|jƒ‘qSr
)Ústrip)Ú.0Úliner
r
rú
<listcomp>Vsz&PathComparer._diff.<locals>.<listcomp>)ÚdriveZabsoluterÚdifflibZDifferÚcompare)r	rrZs_pathZo_pathr
r
rrIszPathComparer._diffN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÚstrrrrrrrrrrrrrr
r
r
rrsr)ÚopÚleftÚrightr
cCsLt|tƒr"|dkr"dg|j|ƒSt|tƒrD|dkrDdg|j|ƒSgSdS)Nz==zComparing path:)Ú
isinstancerrr)r'r(r)r
r
rÚpytest_assertrepr_compareYs
r+)
r%r rÚtypingrrrrr&r+r
r
r
rÚ<module>s
R