Skip to main content

Group files together in a flexible way

Project description

grob

Release Build status codecov 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.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

grob-0.1.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: grob-0.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.7 Linux/6.5.0-25-generic

File hashes

Hashes for grob-0.1.0.tar.gz
Algorithm Hash digest
SHA256 245c9b3cb8c111109246ba807ff80e947c97c5563455e6bde350c68c1930eb0a
MD5 5e48a3fb5f599a899a3c5a5b17059cb4
BLAKE2b-256 a669ccd75f6acd6dbd8b77705440ec78722414a721d9e2c84b88daad7f45bcc5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grob-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.7 Linux/6.5.0-25-generic

File hashes

Hashes for grob-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22254811f6ab110cee5187ac36c8695156266ada86f6ba48c2e4e65c0380d079
MD5 c8b7286c347bb73381c798e81ab3daa7
BLAKE2b-256 ca223ba1738dd3c7443c36aa4944fb3bba0eca87ddf3c9de887dce81def7fa6b

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