Skip to main content

grob

Release Build status Commit activity License

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)

Source distribution for grob 0.2.1
File Size Uploaded
grob-0.2.1.tar.gz 17.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for grob 0.2.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page