Skip to main content

PyPI version

Pygfried

pygfried is a CPython extension that brings siegfried - a powerful, signature-based file format identification tool written in Go - into the Python ecosystem.

Identifying a file with pygfried

Instead of reimplementing siegfried's logic, pygfried embeds the original Go code directly, making core siegfried functionality available to Python users without any changes to the underlying detection engine.

No animals were harmed in the making of this extension.

Usage

$ pip install pygfried
$ python -q
>>> import pygfried
>>> pygfried.version()
'1.11.2'
>>> pygfried.identify("example.png")
'fmt/11'
>>> pygfried.identify("example.png", detailed=True)
{'siegfried': '1.11.2', 'scandate': '2025-06-10T07:16:31+02:00', 'signature': 'default.sig', 'created': '2025-03-01T15:28:08+11:00', 'identifiers': [{'name': 'pronom', 'details': 'DROID_SignatureFile_V120.xml; container-signature-20240715.xml'}], 'files': [{'filename': 'example.png', 'filesize': 237675, 'modified': '2025-06-10T07:11:26+02:00', 'errors': '', 'matches': [{'ns': 'pronom', 'id': 'fmt/11', 'format': 'Portable Network Graphics', 'version': '1.0', 'mime': 'image/png', 'class': 'Image (Raster)', 'basis': 'extension match png; byte match at [[0 16] [237663 12]]', 'warning': ''}]}]}
>>> pygfried.identify_many(["example.png", "README.md"], workers=2)
{'siegfried': '1.11.2', ...}
>>> pygfried.identify_dir("samples", recursive=True, workers=2)
{'siegfried': '1.11.2', ...}

Batch and directory scans

Use identify_many when you already have a list of paths, or identify_dir when you want pygfried to scan a directory for you. Both functions return the same detailed result shape as identify(..., detailed=True).

>>> from pathlib import Path
>>> paths = [str(path) for path in Path("samples").rglob("*.png")]
>>> pygfried.identify_many(paths, workers=4)
{'siegfried': '1.11.2', ...}
>>> pygfried.identify_dir("samples", recursive=True, workers=4)
{'siegfried': '1.11.2', ...}

The workers argument controls Go-side concurrency. The default is 1, which is the most conservative setting. For directories or large path lists, higher values can be much faster because pygfried avoids repeated Python-to-Go calls and identifies multiple files in parallel. A good starting point is the number of CPU cores available to your process, then measure with your own files.

By default identify_dir skips symlinks. Use follow_symlinks=True to identify file symlinks and descend symlinked directories; directory cycles are skipped, and repeated links to the same directory are scanned once.

Limitations

Go libraries can clash

This project uses Go's -buildmode=c-shared to provide its Python extension. Loading multiple Go-based shared libraries in the same process is unsupported and may result in panics or crashes due to conflicts between separate Go runtimes.

This limitation should only affect you if you're using pygfried together with another Python library that also uses a Go extension (built with the same c-shared mechanism) in the same process. If you're just using pygfried on its own, you don't need to worry - everything should work as expected.

Credits

pygfried is powered by the original siegfried project, which is distributed under the Apache License, Version 2.0. All core file format identification logic and signatures are provided by siegfried. We gratefully acknowledge the work of the siegfried project and its contributors.

Download files

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

Source Distribution

pygfried-0.16.0.tar.gz (661.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pygfried-0.16.0-cp310-abi3-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10+Windows x86-64

pygfried-0.16.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

pygfried-0.16.0-cp310-abi3-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

pygfried-0.16.0-cp310-abi3-macosx_11_0_universal2.whl (2.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file pygfried-0.16.0.tar.gz.

File metadata

  • Download URL: pygfried-0.16.0.tar.gz
  • Upload date:
  • Size: 661.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pygfried-0.16.0.tar.gz
Algorithm Hash digest
SHA256 0b1f2233e364c9296cce7e13596ec27c172dceb003cbb0be70c6f0cd7e25cdff
MD5 aa23f970a9033bddfc50b1da4cffbbb9
BLAKE2b-256 7994ea13b9418b73f424997af2baeeb3c62d390cca7c0ff4353db43a6cdc25b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.0.tar.gz:

Publisher: release.yml on artefactual-labs/pygfried

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygfried-0.16.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: pygfried-0.16.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pygfried-0.16.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f63b84b588af8dab570d0d5b682cbb1758b99db4387eb00318b479d435ad3a75
MD5 6ae3658816765a14e6324e7339c1dcfa
BLAKE2b-256 bb292579fbb739c397fd440d2f646b141569be0e06800c480763f719028b5511

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.0-cp310-abi3-win_amd64.whl:

Publisher: release.yml on artefactual-labs/pygfried

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygfried-0.16.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pygfried-0.16.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 57ebef3f1cad6f97326f854920bd02a0662a37d72ea9aa388e7a6d5fde7776eb
MD5 0ec6de05dae110f54149bef7cf3c54d0
BLAKE2b-256 f2ac4d398425da747cef9555e4f3976a93beb2e2c5cccae7f2c6f607c370e93e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on artefactual-labs/pygfried

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygfried-0.16.0-cp310-abi3-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pygfried-0.16.0-cp310-abi3-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 82185d302d14bbdca267221ea6308460060282e0fa2398b74b239644c8e4bdf8
MD5 dd92c129b190cb0bebf6646f4e3f3d12
BLAKE2b-256 9bd7bf6fe3f175ce4680a1a94feaf6b63f80f9ff07575ac7a51ed65a3ea9b7cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.0-cp310-abi3-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on artefactual-labs/pygfried

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygfried-0.16.0-cp310-abi3-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pygfried-0.16.0-cp310-abi3-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 ecc26e80579fbca745ba4d06c7e8e2f518c037c7ecd3a4f3ec7f49ff8c7bae37
MD5 7cc0cb472f3fb6ab7809da5235984d61
BLAKE2b-256 c6a542c2622747210f3bb63bfa9ccfbcb60246748c8f9c97cafe3e554c7c5317

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.0-cp310-abi3-macosx_11_0_universal2.whl:

Publisher: release.yml on artefactual-labs/pygfried

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.17.0

5 files

0.16.1

5 files

This release

0.16.0 This release

5 files

0.15.1

5 files

0.15.0

5 files

0.14.1

5 files

0.14.0

4 files

0.13.0

8 files

0.12.0

8 files

0.11.0

8 files

0.10.0

4 files

0.9.1

3 files

0.9.0

2 files

0.8.0

2 files

0.7.0

3 files

0.6.0

3 files

0.5.0

4 files

0.4.0

4 files

0.3.0

4 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page