Query files by tags.

import gfhub
client = gfhub.Client()
# Query files with .csv tag
files = client.query_files(tags=[".gds"])

print(f"Found {len(files)} CSV files:")
for f in files:
    print(f"  - {f['original_name']}")
Found 10 CSV files:
  - cutback.gds
  - rings.gds
  - spirals.gds
  - rings.gds
  - rings.gds
  - rings.gds
  - rings.gds
  - rings.gds
  - rings.gds
  - rings.gds
# Query files with name filter and .csv tag
files = client.query_files(name="y*", tags=[".csv"])

print(f"Found {len(files)} CSV files matching 'y*':")
for f in files:
    print(f"  - {f['original_name']}")
Found 0 CSV files matching 'y*':
# Query files with .parquet tag
files = client.query_files(tags=[".parquet"])

print(f"Found {len(files)} files with .parquet tag:")
for i, f in enumerate(files):
    # Tags are returned as a dict with tag name as key
    tag_names = list(f["tags"].keys())
    print(f"  - {f['original_name']} (tags: {', '.join(tag_names)})")
    if i > 5:
        print("...")
        break
Found 2700 files with .parquet tag:
  - ring_5000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_5000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_5000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_20000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_20000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_20000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
  - ring_10000.parquet (tags: project, wafer, die, cell, device, .parquet, ring_length_nm, radius_nm, runner)
...
# Query files with die tag
files = client.query_files(tags=["die"])
print(f"Found {len(files)} files with .parquet tag:")
for i, f in enumerate(files):
    # Tags are returned as a dict with tag name as key
    tag_names = list(f["tags"].keys())
    print(f"  - {f['original_name']} (tags: {', '.join(tag_names)})")
    if i > 5:
        print("...")
        break
Found 20356 files with .parquet tag:
  - cutback_device.parquet (tags: project, wafer, die, cell, device, .parquet, length, width, runner)
  - cutback_device.parquet (tags: project, wafer, die, cell, device, .parquet, length, width, runner)
  - cutback_device.parquet (tags: project, wafer, die, cell, device, .parquet, length, width, runner)
  - cutback_device.parquet (tags: project, wafer, die, cell, device, .parquet, length, width, runner)
  - cutback_device.parquet (tags: project, wafer, die, cell, device, .parquet, length, width, runner)
  - die_fsr_r20000nm.png (tags: project, wafer, die, .png, ring_length_nm, radius_nm, runner)
  - die_fsr_r10000nm.png (tags: project, wafer, die, .png, ring_length_nm, radius_nm, runner)
...