For more information on accessing existing packages see the section "Installing a Package".
Adding data to a package
Use the set and set_dir commands to add individual files and whole directories, respectively, to a Package:
# Create test directoriesimport quilt3from pathlib import Pathfrom os import chdirTEST_DIR ="test_workflow"SUB_DIR ="subdir"# create test directoriesPath(TEST_DIR).mkdir(exist_ok=True)Path(TEST_DIR, SUB_DIR).mkdir(exist_ok=True)chdir(TEST_DIR)# %cd TEST_DIR/ if in Jupyter# add entries individually using `set`# ie p.set("foo.csv", "/local/path/foo.csv"),# p.set("bar.csv", "s3://bucket/path/bar.csv")# create test datawithopen("data.csv", "w")as f: f.write("id, value\na, 42")p = quilt3.Package()p.set("data.csv", "data.csv")p.set("banner.png", "s3://quilt-example/imgs/banner.png")# or grab everything in a directory at once using `set_dir`# ie p.set_dir("stuff/", "/path/to/stuff/"),# p.set_dir("things/", "s3://path/to/things/")# create logical directory in packagep.set_dir("stuff/", SUB_DIR)p.set_dir("imgs/", "s3://quilt-example/imgs/")
The first parameter to these functions is the logical key, which will determine where the file lives within the package. So after running the commands above our package will look like this:
The second parameter is the physical key, which states the file's actual location. The physical key may point to either a local file or a remote object (with an s3:// path).
If the physical key and the logical key are the same, you may omit the second argument:
Another useful trick. Use "." to set the contents of the package to that of the current directory:
# create a test file in test directorywithopen("new_data.csv", "w")as f: f.write("id, value\na, 42")# set the contents of the package to that of the current directoryp.set_dir(".", ".")
(local Package)
└─data.csv
└─new_data.csv
Deleting data in a package
Use delete to remove entries from a package:
p.delete("data.csv")
(local Package)
└─new_data.csv
Note that this will only remove this piece of data from the package. It will not delete the actual data itself.
Adding metadata to a package
Packages support metadata anywhere in the package. To set metadata on package entries or directories, use the meta argument: