Coverage for python/lsst/verify/metadata/lsstsw.py : 39%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# This file is part of verify. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (https://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>.
# GitPython is an optional dependency, not part of the LSST Stack.
"""lsstsw package version information based on repos.yaml and checked out Git repositories.
Parameters ---------- dirname : `str` Path of an ``lsstsw`` directory. """ self._dirname = dirname self._repos = self._load_repos_yaml()
"""Test if a package is present in `lsstsw`'s repos.yaml dataset. """ return package_name in self._repos
return len(self._repos)
def manifest_path(self): """Path of the manifest.txt file.""" return os.path.join(self._dirname, 'build', 'manifest.txt')
"""Path to a EUPS package repository in lsstsw/build.
Parameters ---------- package_name : `str` Name of the EUPS package.
Returns ------- path : `str` Directory path of the package's Git repository in lsstsw/build. """ return os.path.join(self._dirname, 'build', package_name)
"""Get the name of the checked-out branch of an EUPS package cloned in lsstsw/build.
Parameters ---------- package_name : `str` Name of the EUPS package.
Returns ------- branch : `str` Name of the checked-out Git branch. If GitPython is not installed, `None` is always returned instead. """ if git is not None: repo = git.Repo(self.get_package_repo_path(package_name)) return repo.active_branch.name else: return None
"""Get the hex SHA of the checked-out commit of an EUPS package cloned to lsstsw/build.
Parameters ---------- package_name : `str` Name of the EUPS package.
Returns ------- commit : `str` Hex SHA of the checkout-out Git commit. If GitPython is not installed, `None` is always returned instead. """ if git is not None: repo = git.Repo(self.get_package_repo_path(package_name)) return repo.active_branch.commit.hexsha else: return None
"""URL of the package's Git repository.
This data is obtained from lsstsw/etc/repos.yaml.
Parameters ---------- package_name : `str` Name of the EUPS package.
Returns ------- repo_url : `str` Git origin URL of the package's Git repository. """ s = self._repos[package_name] if isinstance(s, str): return s else: # For packages that have sub-documents, rather than the value # as the URL. See repos.yaml for format documentation. return s['url']
"""Load lsstsw's repos.yaml.""" yaml_path = os.path.join(self._dirname, 'etc', 'repos.yaml') with open(yaml_path) as f: repos = yaml.safe_load(f) return repos |