a oe @sXddlZddlZddlmZeeejfZddZeeedddZ eedd d Z dS) N)UnioncCstj|}tj|dddS)z1Ensure that the parent directory of `path` existsT)exist_okN)ospathdirnamemakedirs)rrr1C:\Program Files\Certbot\pkgs\setuptools\_path.pyensure_directorys r )p1p2returncCst|t|kS)aDiffers from os.path.samefile because it does not require paths to exist. Purely string based (no comparison between i-nodes). >>> same_path("a/b", "./a/b") True >>> same_path("a/b", "a/./b") True >>> same_path("a/b", "././a/b") True >>> same_path("a/b", "./a/b/c/..") True >>> same_path("a/b", "../a/b/c") False >>> same_path("a", "a/b") False )normpath)r r rrr same_pathsr)filenamer cCs6tjdkrtj|n|}tjtjtj|S)z2Normalize a file/dir name for comparison purposes.cygwin)sysplatformrrabspathnormcaserealpathr)rfilerrr r!sr) rrtypingrstrPathLikeZ_Pathr boolrrrrrr s