
# read metadata
dp = dataio.Datapackage(meta_path=path_to_yaml,
                        meta_dict=dict,
                        {name, version, path})

# save metadata
dp.save_meta(root_path)

# load tables
dp.load_data(root_path)

# create empty tables
dp.initialize()

# save tables
dp.save_data(root_path)

# describe tables
dp.describe(root_path, 
            data_path)

# validate tables
dp.validate(root_path)

# visualize
dp.visualize(root_path)

# add table
dp.add_data(data_dict, meta_dict)

# remove tables
dp.del_data(list)

# join with parent table 
dict = dp.join(table, 
               field,
               records,
               parent_fields)
 returns: {child_table, child_field, parent_table,
           parent_fields, parent_key, 
           records: df with cols = parent_fields }

##############################

# database metadata file has name+version filename
# syntax is name, version, root_path, datapackages = list

db = dataio.Database(meta_path=path_to_yaml,
                     meta_dict=dict,
                     name,
                     version,
                     root_path)

db.save_meta(None or list of specific dps)
db.load_data(None or list of specific dps)
db.initialize(None or list of specific dps): 
  initializes dps without tables
db.save_data(None or dict of specific dps with 
              None or list of specific tables)
db.describe(None or list of specific dps)
db.validate(None or list of specific dps)
db.visualize(None or list of specific dps)
db.add_data(list of name, version, path of dps)
db.del_data(dict of dps with list of tables)
dict = db.join(child_datapackage,
               child_table, 
               child_field,
               records,
               child_select,
               parent_select)
 returns: {child_datapackage, child_table, child_field, 
           parent_datapackage, parent_table,
           parent_primary_key, 
           selection: df with rows = records, 
           cols = parent_select, child_select }

