diff --git a/doc/news/slugify_names.rst b/doc/news/slugify_names.rst new file mode 100644 index 00000000..0113598d --- /dev/null +++ b/doc/news/slugify_names.rst @@ -0,0 +1,3 @@ +**Removed:** + +* Removed `unitpackage.local.collect_datapackage` since it is identical to frictionless `package = Package()`. diff --git a/unitpackage/collection.py b/unitpackage/collection.py index cee1b2c4..95d910d1 100644 --- a/unitpackage/collection.py +++ b/unitpackage/collection.py @@ -343,9 +343,8 @@ def from_local_file(cls, filename): [Entry('engstfeld_2018_polycrystalline_17743_f4b_1')] """ - from unitpackage.local import collect_datapackage - package = collect_datapackage(filename) + package = Package(filename) return cls(package=package) diff --git a/unitpackage/entry.py b/unitpackage/entry.py index 55a288c2..3dee4744 100644 --- a/unitpackage/entry.py +++ b/unitpackage/entry.py @@ -766,9 +766,9 @@ def from_local(cls, filename): Entry('no_bibliography') """ - from unitpackage.local import collect_datapackage + from unitpackage.local import Package - package = collect_datapackage(filename) + package = Package(filename) if len(package.resources) == 0: raise ValueError(f"No resource available in '{filename}'") diff --git a/unitpackage/local.py b/unitpackage/local.py index 96dfff3d..aa85b26c 100644 --- a/unitpackage/local.py +++ b/unitpackage/local.py @@ -29,7 +29,6 @@ import os import os.path from glob import glob -from pathlib import Path import pandas as pd from frictionless import Package, Resource, Schema @@ -69,23 +68,6 @@ def create_df_resource(resource): return df_resource -def collect_datapackage(filename): - r""" - 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 # doctest: +NORMALIZE_WHITESPACE - {'resources': [{'name': - ... - - """ - package = Package(filename) - - return package - - def collect_resources(datapackages): r""" Return a list of resources from a list of Data Packages. @@ -121,7 +103,7 @@ def collect_datapackages(data): """ packages = sorted(glob(os.path.join(data, "**", "*.json"), recursive=True)) - return [collect_datapackage(package) for package in packages] + return [Package(package) for package in packages] def create_unitpackage(csvname, metadata=None, fields=None): @@ -166,24 +148,19 @@ def create_unitpackage(csvname, metadata=None, fields=None): csv_basename = os.path.basename(csvname) - package = Package( - resources=[ - Resource( - path=csv_basename, - basepath=os.path.dirname(csvname) or ".", - ) - ], + resource = Resource( + path=csv_basename, + basepath=os.path.dirname(csvname) or ".", ) - package.infer() - resource = package.get_resource(Path(csv_basename).stem.lower()) + resource.infer() resource.custom.setdefault("metadata", {}) resource.custom["metadata"].setdefault("echemdb", metadata) if fields: - # Update fields in the Data Package describing the data in the CSV - package_schema = resource.schema + # Update fields in the Resource describing the data in the CSV + resource_schema = resource.schema if not isinstance(fields, list): raise ValueError( "'fields' must be a list such as \ @@ -205,14 +182,15 @@ def create_unitpackage(csvname, metadata=None, fields=None): new_fields = [] unspecified_fields = [] - for name in package_schema.field_names: + + for name in resource_schema.field_names: if name in provided_schema.field_names: new_fields.append( provided_schema.get_field(name).to_dict() - | package_schema.get_field(name).to_dict() + | resource_schema.get_field(name).to_dict() ) else: - new_fields.append(package_schema.get_field(name).to_dict()) + new_fields.append(resource_schema.get_field(name).to_dict()) if len(unspecified_fields) != 0: logger.warning( @@ -221,15 +199,17 @@ def create_unitpackage(csvname, metadata=None, fields=None): unused_provided_fields = [] for name in provided_schema.field_names: - if name not in package_schema.field_names: + if name not in resource_schema.field_names: unused_provided_fields.append(name) if len(unused_provided_fields) != 0: logger.warning( - f"Fields with names {unused_provided_fields} was provided but does not appear in the field names of tabular resource {package_schema.field_names}." + f"Fields with names {unused_provided_fields} was provided but does not appear in the field names of tabular resource {resource_schema.field_names}." ) resource.schema = Schema.from_descriptor({"fields": new_fields}) + package = Package(resources=[resource]) + return package