Utilities for the Minnow file processing framework.
Project description
Minnow Python
Utilities for the Minnow file processing framework.
import minnow
Create a processor
A processor can be created by subclassing minnow.Processor
and overriding its process
method, which must take a metadata file path, a data file path, and an output path. The built-in run
method will take care of finding files to process in the input directory.
import sys
from pathlib import Path
import minnow
class MyProcessor(minnow.Processor):
def process(self, metadata_file_path, data_file_path, output_path):
metadata_dict = minnow.load_properties(metadata_file_path)
data_file = data_file_path.open('rb') # Use 'r' for text and 'rb' for binary
# Do whatever work here
# Write 0, 1, or many data/metadata pairs as output
output_path.joinpath('mydata').write_bytes(my_output_data)
minnow.save_properties(my_output_metadata_dict, output_path.joinpath('mydata.properties'))
def main():
input_path = Path(sys.argv[1])
output_path = Path(sys.argv[2])
my_processor = MyProcessor(input_path, output_path) # Create an instance of your processor
my_processor.run()
if __name__ == "__main__":
main()
Utilities
The minnow.Processor
class is basically a wrapper for many of the utilities below. If you need more manual control, these utilities can be used directly.
Load a .properties file
This function will return the properties from a file as a dictionary.
from pathlib import Path
props = load_properties(Path('path/to/file.properties'))
Save to a .properties file
This function will save a dictionary as a .properties file.
props = {'type': 'blueprints', 'orientation': 'above', 'size': 2}
save_properties(props, Path('path/to/file.properties'))
Finding files to process
This function will return pairs of data/metadata files in a directory as DataMetaPair
instances.
pairs_to_process = list_pairs_at_path(Path('path/to/input/directory'))
for pair in pairs_to_process:
data_path = pair.data_path
properties_path = pair.metadata_path
# read the properties if you need to
properties_dict = load_properties(properties_path)
# do some processing on each pair
By default, list_pairs_at_path()
looks for .properties
files, but you can change the extension
parameter:
pairs_to_process = list_pairs_at_path(Path('path/to/input/directory'), extension='.json')
for pair in pairs_to_process:
data_path = pair.data_path
properties_path = pair.metadata_path
# read the properties if you need to
properties_json = json.load(properties_path.read_text())
# do some processing on each pair
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file minnow-2020.307.0.tar.gz
.
File metadata
- Download URL: minnow-2020.307.0.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.9.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 961143bebe27a4edab2f81fbd5586f119447132ac82ff0ce701e8ac3c84e70b0 |
|
MD5 | 3638f5cbd76a95654fd1f485776ee6c8 |
|
BLAKE2b-256 | 2b1fadde474a6748b5cabb2cb799d0d09370fa8282a2455b6e6d086473ffdc5f |