def _resolve_variable(var): is_url = validate_variable_url(var) if not is_url: return var elif not isinstance(ds, pycrunch.datasets.Dataset): raise Exception( 'Valid dataset instance is required to resolve variable urls ' 'in the expression') return ds.session.get(var).payload.body.alias
def test_variable_url_validation(): ds_url = 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3/' assert not validate_variable_url(ds_url) var_url = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3/') assert validate_variable_url(var_url) var_wo_trailing_slash = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3') assert validate_variable_url(var_wo_trailing_slash) subvar_url = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3' '/subvariables/b4d10b49c385aa405756fbbf572649d3/') assert validate_variable_url(subvar_url) subvar_wo_trailing_slash = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3' '/subvariables/b4d10b49c385aa405756fbbf572649d3') assert validate_variable_url(subvar_wo_trailing_slash) var_catalog = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3/summary') assert not validate_variable_url(var_catalog)
def test_variable_url_validation(): ds_url = 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3/' assert not validate_variable_url(ds_url) var_url = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3/' ) assert validate_variable_url(var_url) var_wo_trailing_slash = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3' ) assert validate_variable_url(var_wo_trailing_slash) subvar_url = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3' '/subvariables/b4d10b49c385aa405756fbbf572649d3/' ) assert validate_variable_url(subvar_url) subvar_wo_trailing_slash = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3' '/subvariables/b4d10b49c385aa405756fbbf572649d3' ) assert validate_variable_url(subvar_wo_trailing_slash) var_catalog = ( 'https://test.crunch.io/api/datasets/b4d10b49c385aa405756fbbf572649d3' '/variables/b4d10b49c385aa405756fbbf572649d3/summary' ) assert not validate_variable_url(var_catalog)
def variable_to_url(ds, variable): """Receive a valid variable reference and return the variable url. :param ds: The crunch dataset :param variable: A valid variable reference in the form of a shoji Entity of the variable or a string containing the variable url or alias. :return: The variable url """ assert isinstance(variable, (six.string_types, Entity)) if isinstance(variable, Entity): return variable.self elif validate_variable_url(variable): return variable else: return var_name_to_url(ds, variable)