grob
Group files together in a flexible way using glob-like patterns.
pip install grob
In its simplest form, grob simply lists all files in a directory:
~ grob "*" .
[
"examples/one_tag_same_dir/root/image_001.png",
"examples/one_tag_same_dir/root/image_002.jpg",
"examples/one_tag_same_dir/root/image_003.gif"
]
given the following directory content:
root
├── image_001.png
├── image_002.jpg
└── image_003.gif
However, grob is mainly useful to group different files together. Let's say you have images and corresponding JSON description for each image:
root
├── image_1.png
├── image_2.png
├── image_3.png
├── labels_1.json
├── labels_2.json
└── labels_3.json
~ grob "image=image_{id}.png,labels=labels_{id}.json" .
{
"1": {"image": "image_1.png", "labels": "labels_1.json"},
"2": {"image": "image_2.png", "labels": "labels_2.json"},
"3": {"image": "image_3.png", "labels": "labels_3.json"}
}
Now imagine each group of inputs is stored in the same subdirectory:
root
├── group_a
│ ├── image.png
│ └── labels.json
├── group_b
│ ├── image.png
│ └── labels.json
├── group_c
│ ├── image.png
│ └── labels.json
└── group_d
├── image.png
└── labels.json
We just need to update our pattern:
~ grob "image=group_{name}/*.png,labels=group_{name}/*.json" .
{
"a": {"image": "group_a/image.png", "labels": "group_a/labels.json"},
"b": {"image": "group_b/image.png", "labels": "group_b/labels.json"},
"c": {"image": "group_c/image.png", "labels": "group_c/labels.json"},
"d": {"image": "group_d/image.png", "labels": "group_d/labels.json"}
}
What if each type of file lives in its own directory?
root
├── images
│ ├── fifi.gif
│ ├── loulou.png
│ └── riri.jpg
└── labels
├── fifi.json
├── loulou.json
└── riri.json
~ grob "image=images/{name}.*,labels={name}.json" .
{
"riri": {"image": "images/riri.jpg", "labels": "labels/riri.json"},
"fifi": {"image": "images/fifi.gif", "labels": "labels/fifi.json"},
"loulou": {"image": "images/loulou.png", "labels": "labels/loulou.json"}
}
See more in the Examples section, or check tests/examples/.
Contribute
Install the environment and the pre-commit hooks with
make install
Run tests:
make tests
# Alternatively, you can directly run `pytest`
Run code quality tools:
make check
Repository initiated with fpgmaas/cookiecutter-poetry.
Metadata
Release files for grob 0.2.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 | |
|---|---|---|---|
| grob-0.2.1.tar.gz | 17.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grob-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.5 kB
Release files / grob-0.2.1.tar.gz
| Download URL | grob-0.2.1.tar.gz |
|---|---|
| Size | 17.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ca2dc3b9901f2a1595b780532645f0789c64d7680e5a29f59b2622c6dbd5d32
|
|
BLAKE2b-256 checksum How to use checksums |
b120df3769dae0dc354660416f47320d3b4dce231b06a9d2a90bbe38e9f5e8c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
|
Release files / grob-0.2.1-py3-none-any.whl
| Download URL | grob-0.2.1-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aacea041158cd46795632913f886d37d7121d976c9db0934c488f8d3cd8d4697
|
|
BLAKE2b-256 checksum How to use checksums |
e67c5fd68e1767fa3ff88892ddcde3dce9bca2526c5c17a56693d3b00a3736c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
|