3 F\ @sZddlZddlmZddlmZddlZdaej e Z ddZ ddZ dd Zd d ZdS) N) configparser)loggingcCsFx@tjj|tjdtjj|tjtjdgD]}tjj|r*|Sq*WdS)zFind the 'setup.cfg' file, if it exists. This assumes we're using 'doc/source' for documentation, but also allows for single level 'doc' paths. z setup.cfgN)ospathjoinpardirexists)srcdirrr b/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/pbr/pbr/sphinxext.py_find_setup_cfgs  r c Cstdkrtj}t|}| s*|j| r8tjddSy8|jdd}t|j dkrnt|dkrn|jdd}Wn tj k rtjddSX|atS) zReturn string name of project name, or None. This extracts metadata from 'setup.cfg'. We don't rely on distutils/setuptools as we don't want to actually install the package simply to build docs. Nz7Could not find a setup.cfg to extract project name frommetadataname summaryz1Could not extract project metadata from setup.cfg) _projectr ConfigParserr readloggerinfogetlensplitError)r parserrprojectr r r _get_project_name-s    rc Csht|j}ytjj|}Wntk r2d}YnX|rd|jj rd|jj rd|j|j_|j |j_dS)N) rr pbrversionZ VersionInfo ExceptionconfigreleaseZcanonical_version_stringZversion_string_with_vcs)app project_name version_infor r r _builder_initedOs   r&cCs|jdtdddS)Nzbuilder-initedT)Zparallel_read_safeZparallel_write_safe)connectr&)r#r r r setup^s r()os.pathrZ six.movesrZ sphinx.utilrZ pbr.versionrr getLogger__name__rr rr&r(r r r r s   "