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.1.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.1-cp310-abi3-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10+Windows x86-64

pygfried-0.16.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: pygfried-0.16.1.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.1.tar.gz
Algorithm Hash digest
SHA256 cf9fc83c42432f5788d94b7f2bdbf1b60fce2a227b57f6a9c68a1070f90c3724
MD5 68aaed9efc52ea35b808bcc75616ffe7
BLAKE2b-256 6c421d474129f935cf207d7d25a58b67a6a18cb83044029f6ef5ca7e20ebef58

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.1.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.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: pygfried-0.16.1-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.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7530902db59cc308ba67db3e0b50cb226529ef890c9436d68477f339bae85a56
MD5 7092b82a0e3e64c0023b30ee17abc967
BLAKE2b-256 ae5b8c8cb2e45e7f6a286f6d1bc7bdfc4ab963c1203a76f6231adc67b568175f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.1-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.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pygfried-0.16.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 956519ac8650ef98e017775f0def147f8bb96bc6188ddeb967335b138a2422df
MD5 25eefced538b4914825c5f3cf386f0e5
BLAKE2b-256 fa4db253777737c9a3c4a65097264fd969be3e0c165599b46302571fc3f15c41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.1-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.1-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.1-cp310-abi3-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 07ff8c500782993d473d8514189376835ecbeeb9141bea00e1aedd3fdcf763c8
MD5 0c1425626b0f2d79f86fa8b28707a886
BLAKE2b-256 0be06c44b26a0646bdc077e05884e23376ef66062c6b5abdecac6991851534ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.1-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.1-cp310-abi3-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pygfried-0.16.1-cp310-abi3-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 995269221f2812fc9fb09ffeb1579fa07ecebd2c8300ad0f746ce0f247b7c990
MD5 c93b2e242c92bfd56b0dfae81c294e6d
BLAKE2b-256 dc2eb9a51a810d2eea847cd4c3509581a062b6311e7d18a567f8f2c03768ab61

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygfried-0.16.1-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

This release

0.16.1 This release

5 files

0.16.0

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