Skip to content

Bump nom-exif from 2.8.0 to 3.3.0#724

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/nom-exif-3.3.0
Closed

Bump nom-exif from 2.8.0 to 3.3.0#724
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/nom-exif-3.3.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 15, 2026

Bumps nom-exif from 2.8.0 to 3.3.0.

Release notes

Sourced from nom-exif's releases.

v3.3.0 — PNG support + source-input unification

Highlights

PNG support (#18). read_exif("foo.png") and the rest of the public API now work for PNG files. Both modern PNGs (standard eXIf chunk) and legacy ImageMagick / Photoshop output (hex-encoded EXIF in Raw profile type exif / Raw profile type APP1 tEXt chunks) are covered. Legacy hex-encoded EXIF is transparently decoded and merged so Exif::get(...) returns the same result either way.

New parse_image_metadata entry point. Returns ImageMetadata { exif, format }, which lets callers see PNG tEXt key/value pairs alongside EXIF — the first non-EXIF format-specific metadata surfaced by the library. Single method handles file / stream / memory inputs (no _from_bytes sibling). Async variant under the tokio feature.

use nom_exif::{MediaParser, MediaSource, ImageMetadata, ImageFormatMetadata};
let mut parser = MediaParser::new();
let ms = MediaSource::file_path("photo.png")?;
let meta: ImageMetadata = parser.parse_image_metadata(ms)?;
if let Some(ImageFormatMetadata::Png(text)) = meta.format {
for (k, v) in text.iter() {
println!("{k}: {v}");
}
}

Source-input unification. MediaSource::from_memory (and AsyncMediaSource::from_memory under tokio) replace the <()>::from_bytes / parse_*_from_bytes zoo. All three parse_* methods now accept memory-mode sources directly with the same zero-copy bytes::Bytes story. Old methods remain as #[deprecated] shims for the v3.x line; removal is scheduled for v4.

Added

  • MediaParser::parse_image_metadata and parse_image_metadata_async
  • MediaSource::from_memory / AsyncMediaSource::from_memory
  • New public types: ImageMetadata<E: ExifRepr = Exif>, ImageFormatMetadata (#[non_exhaustive]), PngTextChunks, ExifRepr sealed trait
  • examples/rexiftool prints PNG tEXt chunks under a -- Format Metadata -- section (and _format JSON key); add --no-format to suppress

Deprecated

  • MediaSource::<()>::from_bytes — use MediaSource::from_memory
  • MediaParser::parse_exif_from_bytes / parse_track_from_bytes
  • read_exif_from_bytes, read_exif_iter_from_bytes, read_track_from_bytes, read_metadata_from_bytes

All deprecated symbols still compile and pass their original tests in v3.x.

Not yet supported

  • PNG iTXt and zTXt chunks (would require a flate2 dependency for iTXt's optional zlib-compressed variant). Their addition is non-breaking — PngTextChunks is shaped to extend.

Notes

  • Top-level read_image_metadata helpers are deferred to v4 alongside the planned Metadata enum redesign (a single read_metadata returning Metadata::Image(ImageMetadata)). Mixed-content batch users on v3.3 still match on MediaSource::kind() to dispatch between parse_image_metadata and parse_track.

Full changelog: CHANGELOG.md · crates.io: nom-exif 3.3.0 (publishing after CI passes)

... (truncated)

Changelog

Sourced from nom-exif's changelog.

nom-exif v3.3.0 (2026-05-10)

Added

  • PNG support (#18)read_exif("foo.png") and friends now work for PNG files, covering standard eXIf chunks and legacy hex-encoded EXIF in Raw profile type exif / Raw profile type APP1 tEXt chunks (ImageMagick / Photoshop pattern). Legacy hex-encoded EXIF is transparently merged into Exif::get(...).
  • MediaParser::parse_image_metadata — new entry point that returns ImageMetadata { exif, format }, surfacing PNG tEXt chunks via ImageFormatMetadata::Png(PngTextChunks). Single method handles file/stream/memory inputs (no _from_bytes sibling). Async variant under the tokio feature.
  • MediaSource::from_memory — replaces MediaSource::<()>::from_bytes. Returns MediaSource<std::io::Empty> so parse_exif<R: Read>, parse_track<R: Read>, and parse_image_metadata<R: Read> can all accept memory-mode sources directly.
  • AsyncMediaSource::from_memory (tokio feature) — async counterpart, returns AsyncMediaSource<tokio::io::Empty>. The three parse_*_async methods all accept memory-mode sources directly with the same zero-copy bytes::Bytes story as sync.
  • New public types: ImageMetadata<E: ExifRepr = Exif>, ImageFormatMetadata (#[non_exhaustive]), PngTextChunks, ExifRepr sealed trait.
  • examples/rexiftool prints PNG tEXt chunks under a -- Format Metadata -- section (and _format JSON key); add --no-format to suppress.

Deprecated

  • MediaSource::<()>::from_bytes — use MediaSource::from_memory.
  • MediaParser::parse_exif_from_bytes — use parse_exif directly with a MediaSource::from_memory source.
  • MediaParser::parse_track_from_bytes — analogous.
  • read_exif_from_bytes, read_exif_iter_from_bytes, read_track_from_bytes, read_metadata_from_bytes — analogous.
  • All deprecated symbols still compile and pass their original tests in v3.x. Removal scheduled for v4.

Notes

  • Top-level read_image_metadata helpers are deferred to v4 alongside the planned Metadata enum redesign (a single read_metadata returning Metadata::Image(ImageMetadata)). Mixed-content batch users on v3.3 still match on MediaSource::kind() to dispatch between parse_image_metadata and parse_track.
  • PNG iTXt and zTXt chunks are not yet supported (would require a flate2 dependency for iTXt's optional zlib-compressed variant). Their addition is non-breaking — PngTextChunks is shaped to extend.

... (truncated)

Commits
  • 9444ead docs: restructure README + lib.rs around Motion Photos
  • 918d71b release: v3.3.0 (2026-05-10) — PNG support + source-input unification
  • a7fad88 fix(async): parse_exif_async streaming branch missing PNG EOF tolerance
  • e7a3e7a docs(changelog): document AsyncMediaSource::from_memory
  • a1436e0 test(async): coverage for AsyncMediaSource::from_memory
  • 51876d0 feat(async): AsyncMediaSource gains memory mode
  • 479cc33 refactor(rexiftool): single parse_image_metadata call per image
  • 70768d2 fix(parser): scope EOF tolerance to PNG only
  • 92c21ba fix(png): guard against chunk-length integer overflow on 32-bit
  • d4acee0 fix(clippy): suppress type_complexity on parse_png_full + async
  • Additional commits viewable in compare view

Most Recent Ignore Conditions Applied to This Pull Request
Dependency Name Ignore Conditions
nom-exif [>= 3.4.a, < 3.5]

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [nom-exif](https://github.com/mindeng/nom-exif) from 2.8.0 to 3.3.0.
- [Release notes](https://github.com/mindeng/nom-exif/releases)
- [Changelog](https://github.com/mindeng/nom-exif/blob/main/CHANGELOG.md)
- [Commits](mindeng/nom-exif@v2.8.0...v3.3.0)

---
updated-dependencies:
- dependency-name: nom-exif
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update Rust code labels May 15, 2026
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github May 25, 2026

Superseded by #732.

@dependabot dependabot Bot closed this May 25, 2026
@dependabot dependabot Bot deleted the dependabot/cargo/nom-exif-3.3.0 branch May 25, 2026 04:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update Rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants