Source code for sdss_access.path.changelog
# !/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Filename: utils.py
# Project: path
# Author: Brian Cherinka
# Created: Thursday, 23rd April 2020 1:24:14 pm
# License: BSD 3-clause "New" or "Revised" License
# Copyright (c) 2020 Brian Cherinka
# Last Modified: Thursday, 23rd April 2020 1:24:15 pm
# Modified By: Brian Cherinka
from __future__ import print_function, division, absolute_import
from tree import Tree
from tree.changelog import compute_changelog as compute_path_changes
[docs]
def compute_changelog(new, old, pprint=None, to_list=None):
''' Compute the difference between two Tree PATH sections
Compares two tree PATH ini sections from the given environment
configurations and returns adictionary with keys `new`, and `updated`,
indicating newly added paths, and any paths that have been modified
from the last release. Accepts either string names of config
files, e.g. "dr16" and "dr15", or the preloaded `Tree` configs, e.g.
`Tree(config='dr16')`.
Parameters:
new (str|Tree):
The new tree enviroment to compare
old (str|Tree):
The old tree environment to compare
pprint (bool):
If True, returns a single joined string for printing. Default is False.
to_list (bool):
If True, returns a list of strings formatted for printing. Default is False.
Returns:
A dictionary of relevant changes between the two releases
'''
return compute_path_changes(new, old, pprint=pprint, paths_only=True, to_list=to_list)
[docs]
def get_path_templates(name, public=None):
''' Return the path templates for all releases
Produces a dictionary of path templates for a given
path name for all releases. Set public keyword to toggle only
public data releases (DRs).
Parameters:
name (str):
The sdss_access path name
public (bool):
If True, selects only public data releases
Returns:
A dictionary of the path template per release
'''
releases = Tree.get_available_releases(public=public)
versions = {}
for release in reversed(releases):
release = 'sdsswork' if 'WORK' in release else release
tree = Tree(config=release.lower())
versions[release] = tree.paths.get(name, None)
return versions
[docs]
def get_available_releases(public=None):
''' Get the available releases
Parameters:
public (bool):
If True, only return public data releases
'''
return Tree.get_available_releases(public=public)