def test_union_catalog(): path = os.path.dirname(__file__) uri1 = os.path.join(path, 'catalog_union_1.yml') uri2 = os.path.join(path, 'catalog_union_2.yml') union_cat = Catalog([uri1, uri2]) assert_items_equal(list(union_cat), ['entry1', 'entry1_part', 'use_example1']) assert union_cat.entry1_part.describe() == { 'container': 'dataframe', 'user_parameters': [{ 'name': 'part', 'description': 'part of filename', 'default': '1', 'type': 'str', 'allowed': ['1', '2'], }], 'description': 'entry1 part', 'direct_access': 'allow' } desc_open = union_cat.entry1_part.describe_open() assert desc_open['args']['urlpath'].endswith('entry1_1.csv') del desc_open['args']['urlpath'] # Full path will be system dependent desc_open['args']['metadata'].pop('catalog_dir') assert 'csv' in str(desc_open.pop('plugin')) assert desc_open == { 'args': { 'metadata': { 'bar': [2, 4, 6], 'cache': [], 'foo': 'baz' } }, 'description': 'entry1 part', 'direct_access': 'allow', 'metadata': { 'bar': [2, 4, 6], 'cache': [], 'foo': 'baz' }, } # Implied creation of data source assert union_cat.entry1.container == 'dataframe' md = union_cat.entry1.metadata md.pop('catalog_dir') assert md == dict(foo='bar', bar=[1, 2, 3], cache=[]) # Use default parameters in explict creation of data source assert union_cat.entry1_part().container == 'dataframe' # Specify parameters in creation of data source assert union_cat.entry1_part(part='2').container == 'dataframe'
def test_union_catalog(): path = os.path.dirname(__file__) uri1 = os.path.join(path, 'catalog_union_1.yml') uri2 = os.path.join(path, 'catalog_union_2.yml') union_cat = Catalog([uri1, uri2]) assert_items_equal(list(union_cat), ['entry1', 'entry1_part', 'use_example1']) expected = { 'name': 'entry1_part', 'container': 'dataframe', 'user_parameters': [{ 'name': 'part', 'description': 'part of filename', 'default': '1', 'type': 'str', 'allowed': ['1', '2'], }], 'description': 'entry1 part', 'direct_access': 'allow' } for k in expected: assert union_cat.entry1_part.describe()[k] == expected[k] # Implied creation of data source assert union_cat.entry1.container == 'dataframe' md = union_cat.entry1._metadata assert md == dict(foo='bar', bar=[1, 2, 3]) # Use default parameters in explict creation of data source assert union_cat.entry1_part().container == 'dataframe' # Specify parameters in creation of data source assert union_cat.entry1_part(part='2').container == 'dataframe'