o 3aZ @sddlZddlZddlZddlZddlZddlmZejdkZejdkZ ejdkZ ejdkZ ejdkZ ddd Z dd d Zdd d ZdddZeddZedZddZdS)N)_lazy_re_compile))r)r)r )r cCs~t|}t|}d}|ddkr#|ddkr#t}|rd|}||S|ddkr;dd d d }||dt|d}||S) z7Return a PEP 440-compliant version number from VERSION.ralpharz.dev%sfinalabrc)r betar)get_complete_versionget_main_versionget_git_changesetstr)versionmainsub git_changesetmappingr6/usr/lib/python3/dist-packages/django/utils/version.py get_versions rcCs8t|}|ddkr dnd}ddd|d|DS)z+Return main version (X.Y[.Z]) from VERSION.rr.css|]}t|VqdSN)r).0xrrr 0sz#get_main_version..N)rjoin)rpartsrrrr,srcCs<|dur ddlm}|St|dksJ|ddvsJ|S)z Return a tuple of the django version. If version argument is non-empty, check for correctness of the tuple provided. Nr)VERSIONr)r rrr )djangor%lenrrrrr3s  rcCs(t|}|ddkr dSd|ddS)Nrr devz%d.%dr)rr)rrrget_docs_versionAs r+cCsttjtjtjt}tjgdtjtjd|dd}|j}z t j t |}Wn t y4YdSw| dS)a$Return a numeric identifier of the latest git changeset. The result is the UTC timestamp of the changeset in YYYYMMDDHHMMSS format. This value isn't guaranteed to be unique, but collisions are very unlikely, so it's sufficient for generating the development version numbers. )gitlogz--pretty=format:%ctz--quietz-1HEADT)stdoutstderrshellcwduniversal_newlinesNz %Y%m%d%H%M%S)ospathdirnameabspath__file__ subprocessrunPIPEr/datetimeutcfromtimestampint ValueErrorstrftime)repo_dirgit_log timestamprrrrIs  rz(\d+|[a-z]+|\.)c CsZg}t|D]!}|r(|dkr(zt|}Wn ty"Yt|Sw||qt|S)zh Return a tuple of version numbers (e.g. (1, 2, 3)) from the version string (e.g. '1.2.3'). r)version_component_resplitr>r?appendtuple)rversion_numbersitem componentrrrget_version_tuplebs    rKr)r< functoolsr4r9sysdjango.utils.regex_helperr version_infoPY36PY37PY38PY39PY310rrrr+ lru_cacherrDrKrrrrs&