file-provenance-utils
Collection of functions for deriving provenance information for insertion into the output files.
This will include:
-
The absolute path for the primary executable.
-
The timestamp for when the file was created.
-
The user account that generated the output file.
-
The host/server that the software was executed on.
Installation
Please see the INSTALL guide for instructions.
Usage
Example code example/json_example.py for writing JSON output file:
from file_provenance_utils import get_json_provenance
outfile = "/tmp/test-file-provenance-utils/report.json"
config_file = "config.yaml"
logfile = "/tmp/analysis.log"
outdir = "/tmp/test-file-provenance-utils/instance-outdir"
files = {
"input_file": "/tmp/test-file-provenance-utils/instance-input-file.txt",
"data1_file": "/tmp/test-file-provenance-utils/data1-file.txt",
"data2_file": "/tmp/test-file-provenance-utils/data2-file.txt"
}
provenance = get_json_provenance(
config_file=config_file,
logfile=logfile,
outdir=outdir,
files=files
)
# Assuming the provenance returned is a dictionary and needs to be serialized to JSON
import json
with open(outfile, "w") as f:
json.dump(provenance, f, indent=4)
print(f"Wrote provenance information to: {outfile}")
Contents of output JSON file:
{
"provenance": {
"executable": "/tmp/test-file-provenance-utils/json_example.py",
"config_file": "config.yaml",
"logfile": "/tmp/analysis.log",
"date-created": "2025-02-23 15:41:01",
"host": "r2d2",
"user": "sundaram",
"outdir": "/tmp/test-file-provenance-utils/instance-outdir",
"files": {
"input_file": "/tmp/test-file-provenance-utils/instance-input-file.txt",
"data1_file": "/tmp/test-file-provenance-utils/data1-file.txt",
"data2_file": "/tmp/test-file-provenance-utils/data2-file.txt"
}
}
}
Example code example/xml_example.py for writing XML output file:
from file_provenance_utils import get_xml_provenance
outfile = "/tmp/test-file-provenance-utils/report.xml"
config_file = "config.yaml"
logfile = "/tmp/analysis.log"
outdir = "/tmp/test-file-provenance-utils/instance-outdir"
files = {
"input_file": "/tmp/test-file-provenance-utils/instance-input-file.txt",
"data1_file": "/tmp/test-file-provenance-utils/data1-file.txt",
"data2_file": "/tmp/test-file-provenance-utils/data2-file.txt"
}
provenance = get_xml_provenance(
config_file=config_file,
logfile=logfile,
outdir=outdir,
files=files
)
# Write the XML string directly to the output file
with open(outfile, "w") as f:
f.write(provenance)
print(f"Wrote provenance information to: {outfile}")
Contents of output XML file:
<?xml version="1.0" ?>
<provenance>
<executable>/tmp/test-file-provenance-utils/xml_example.py</executable>
<config_file>config.yaml</config_file>
<logfile>/tmp/analysis.log</logfile>
<date-created>2025-02-23 15:45:55</date-created>
<host>r2d2</host>
<user>sundaram</user>
<outdir>/tmp/test-file-provenance-utils/instance-outdir</outdir>
<files>
<file name="input_file">/tmp/test-file-provenance-utils/instance-input-file.txt</file>
<file name="data1_file">/tmp/test-file-provenance-utils/data1-file.txt</file>
<file name="data2_file">/tmp/test-file-provenance-utils/data2-file.txt</file>
</files>
</provenance>
Example code example/plain_text_example.py for writing tab-delimited or comma-separated or plain text output file:
from file_provenance_utils import get_plain_text_provenance
outfile = "/tmp/test-file-provenance-utils/report.txt"
config_file = "config.yaml"
logfile = "/tmp/analysis.log"
outdir = "/tmp/test-file-provenance-utils/instance-outdir"
files = {
"input_file": "/tmp/test-file-provenance-utils/instance-input-file.txt",
"data1_file": "/tmp/test-file-provenance-utils/data1-file.txt",
"data2_file": "/tmp/test-file-provenance-utils/data2-file.txt"
}
provenance = get_plain_text_provenance(
config_file=config_file,
logfile=logfile,
outdir=outdir,
files=files
)
with open(outfile, "w") as f:
f.write(provenance)
print(f"Wrote provenance information to: {outfile}")
Contents of output plain-text file:
## executable: /tmp/test-file-provenance-utils/plain_text_example.py
## config_file: config.yaml
## logfile: /tmp/analysis.log
## date-created: 2025-02-23 15:40:52
## host: r2d2
## user: sundaram
## outdir: /tmp/test-file-provenance-utils/instance-outdir
## files:
## input_file: /tmp/test-file-provenance-utils/instance-input-file.txt
## data1_file: /tmp/test-file-provenance-utils/data1-file.txt
## data2_file: /tmp/test-file-provenance-utils/data2-file.txt
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
To-Do/Coming Next
Please view the listing of planned improvements here.
CHANGELOG
Please view the CHANGELOG here.
License
======= History
0.1.0 (2025-02-23)
- First release on PyPI.
Metadata
Release files for file-provenance-utils 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| file_provenance_utils-0.1.1.tar.gz | 16.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| file_provenance_utils-0.1.1-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 27.2 kB
Release files / file_provenance_utils-0.1.1.tar.gz
| Download URL | file_provenance_utils-0.1.1.tar.gz |
|---|---|
| Size | 16.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
576f12fe9f8f3e746153293f3de0559f1e43648a2ef56ab129ccbec394068d77
|
|
BLAKE2b-256 checksum How to use checksums |
b65c66df0df09db696138967140a8521a1ee2c8dbef63832ae880b90e8acaf19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|
Release files / file_provenance_utils-0.1.1-py2.py3-none-any.whl
| Download URL | file_provenance_utils-0.1.1-py2.py3-none-any.whl |
|---|---|
| Size | 11.2 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7c4d46a3df3e620d935ef4cb13f4e595b6263be8ae9bab4b8633bef4054387fe
|
|
BLAKE2b-256 checksum How to use checksums |
07bb0336afcf1b00b9b819089f647b3782285237d6b017759a00ec580e0a4ca7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|