Skip to main content

Group files together in a breeze with glob-like patterns

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grob-0.2.1.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

grob-0.2.1-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file grob-0.2.1.tar.gz.

File metadata

  • Download URL: grob-0.2.1.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure

File hashes

Hashes for grob-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0ca2dc3b9901f2a1595b780532645f0789c64d7680e5a29f59b2622c6dbd5d32
MD5 c1db7be226175aaf427de1012b957f33
BLAKE2b-256 b120df3769dae0dc354660416f47320d3b4dce231b06a9d2a90bbe38e9f5e8c5

See more details on using hashes here.

File details

Details for the file grob-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: grob-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure

File hashes

Hashes for grob-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aacea041158cd46795632913f886d37d7121d976c9db0934c488f8d3cd8d4697
MD5 fb099cb3d72f52ea3007a886ff2623c1
BLAKE2b-256 e67c5fd68e1767fa3ff88892ddcde3dce9bca2526c5c17a56693d3b00a3736c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page