unitpackage.local

Utilities to work with local frictionless Data Packages such as collecting Data Packages and creating unitpackages.

unitpackage.local.collect_datapackage(filename)

Return a Data Package from a :param filename which must be a valid frictionless Data Package (JSON).

EXAMPLES:

>>> package = collect_datapackage("./examples/local/no_bibliography/no_bibliography.json")
>>> package 
{'resources': [{'name':
...
unitpackage.local.collect_datapackages(data)

Return a list of data packages defined in the directory data and its subdirectories.

EXAMPLES:

>>> packages = collect_datapackages("./examples/local")
>>> packages[0] 
{'resources': [{'name':
...
unitpackage.local.collect_resources(datapackages)

Return a list of resources from a list of Data Packages.

EXAMPLES:

>>> packages = collect_datapackages("./examples/local")
>>> resources = collect_resources(packages)
>>> [resource.name for resource in resources] 
['alves_2011_electrochemistry_6010_f1a_solid',
'engstfeld_2018_polycrystalline_17743_f4b_1',
'no_bibliography']
unitpackage.local.create_df_resource(resource)

Return a pandas dataframe resource for a frictionless Tabular Resource.

EXAMPLES:

>>> from frictionless import Package
>>> resource = Package("./examples/local/no_bibliography/no_bibliography.json").resources[0]
>>> df_resource = create_df_resource(resource) 
>>> df_resource
{'name': 'memory',
...
'format': 'pandas',
...

>>> df_resource.data
              t         E         j
...
unitpackage.local.create_unitpackage(csvname, metadata=None, fields=None)

Return a Data Package built from a :param metadata: dict and tabular data in :param csvname: str.

The :param fields: list must must be structured such as [{‘name’:’E’, ‘unit’: ‘mV’}, {‘name’:’T’, ‘unit’: ‘K’}].

EXAMPLES:

>>> fields = [{'name':'E', 'unit': 'mV'}, {'name':'I', 'unit': 'A'}]
>>> package = create_unitpackage("./examples/from_csv/from_csv.csv", fields=fields)
>>> package 
{'resources': [{'name':
...

TESTS:

Invalid fields:

>>> fields = 'not a list'
>>> package = create_unitpackage("./examples/from_csv/from_csv.csv", fields=fields) 
Traceback (most recent call last):
...
ValueError: 'fields' must be a list such as
[{'name': '<fieldname>', 'unit':'<field unit>'}]`,
e.g., `[{'name':'E', 'unit': 'mV}, {'name':'T', 'unit': 'K}]`

More fields than required:

>>> fields = [{'name':'E', 'unit': 'mV'}, {'name':'I', 'unit': 'A'}, {'name':'x', 'unit': 'm'}]
>>> package = create_unitpackage("./examples/from_csv/from_csv.csv", fields=fields) 

Part of the fields specified:

>>> fields = [{'name':'E', 'unit': 'mV'}]
>>> package = create_unitpackage("./examples/from_csv/from_csv.csv", fields=fields) 
unitpackage.local.write_metadata(out, metadata)

Write metadata to the out stream in JSON format.