Upstream changes:
1.40.0 - 2018-01-25
-------------------
* APEv2: Ensures tags are saved in a deterministic way :pr:`329`
(:user:`cushy007`)
* Restore WinXP support for the CLI tools 🐛`332`
* easymp4: Fix EasyMP4.add_tags() when no tags exist 🐛`334`
* id3: Fix PyCharm not being able to resolve id3 frame class references
🐛`336`
* Support pathlib.Path objects for paths (PEP 519) 🐛`337` :pr:`338`
(:user:`Andrew Rabert <nvllsvm>`)
* Use semver for versioning
1.39:
* Tests:
* Require `hypothesis <https://hypothesis.readthedocs.io>`__
* Run pycodestyle/pyflakes tests by default. Skip with ``--no-quality`` or
``-m no quality`` when using pytest directly.
* Python 3.3 is no longer supported
* MP3: Improved bitrate accuracy for files with XING header
* ASF: Fix case where some tags resulted in broken ASFUnicodeAttribute
instances
* Add support for filesystems which don't support opening files read/write
(gvfs over fuse for example)
* mid3v2: Add support for USLT
* Minor improvements
* Note: New release tarballs are now hosted on github:
https://github.com/quodlibet/mutagen/releases
* ID3:
* Add iTunes grouping frame `id3.GRP1`
* Fix exposing text frames where the text can't be encoded with the
reported encoding due to merging of frames
* OGG: Fix wrong StreamInfo.length (small negative value) for all
ogg based formats in rare cases.
1.31 - 2015.09.10
-----------------
* New padding control API for flac/id3/mp4/asf/ogg/aiff and everything
based on it, except oggflac 🐛`229`
* Mutagen will now reduce padding on save if there is lots of it.
* delete() will remove padding in addition to tags.
* ASF:
* Padding support 🐛`201`
* Don't report negative lengths for some broken files
* New :class:`asf.ASFInfo`.codec_type/codec_name/codec_description
* Implement ASF.delete()
* OGG: Padding support for Opus/Vorbis/Theora/Speex
* M4A: Implementation removed. Every operation will raise. Use mp4 instead.
* Tools: Support Unicode output under Windows 🐛`232`
1.30 - 2015.08.22
-----------------
* FLAC:
* Fix :meth:`flac.FLAC.save` in case the source contained a too large
(invalid but recovered) image block 🐛`226`
* MP3:
* Improved length and bitrate accuracy:
* Read lame "Info" tags for improved bitrate/length accuracy
* Use bytes info of VBRI headers for improved bitrate accuracy
* Subtract encoder delay/padding from length for improved length accuracy
(especially for short tracks)
* Fix rare false identification of Xing headers 🐛`182`
* New :class:`mp3.MPEGInfo`.encoder_info attribute containing the encoder
name and version 🐛`66`
* New :class:`mp3.MPEGInfo`.bitrate_mode attribute exposing if the file is
VBR, ABR or CBR 🐛`24` 🐛`66`
* New :class:`mp3.MPEGInfo`.channels attribute providing the channel count
* New :class:`mp3.MPEGInfo`.track_gain/track_peak/album_gain values exposing
the replaygain info provided by the lame header 🐛`36`
* ID3:
* New :class:`id3.PictureType` enum for the picture type used in APIC frames 🐛`222`
* MP4:
* Fix MP4FreeForm.__eq__ and MP4Cover.__eq__ when comparing with bytes
🐛`218`
* Don't raise on :meth:`FileType.save` if there are no tags. 🐛`227`
* Minor fixes: 🐛`228`
1.29 - 2015.05.09
-----------------
* mid3v2: Fix an error under Python 3 with files without tags 🐛`219`
* mid3v2: Various Windows+Python2+Unicode fixes 🐛`214`
* Don't emit warnings during loading (ID3Warning) 🐛`223`
* py.test support
1.28 - 2015.03.06
-----------------
* Various minor fixes to make mutagen behave the same under Python3 as under
Python2.
* Update gpl text 🐛`205`
* Documentation: Add example for how to create a new flac.Picture 🐛`209`
* ID3:
* Various error handling fixes (🐛`110`, 🐛`211`, ...)
* Don't hide ID3 loading errors with ID3FileType.
* In case a synch safe marked frame isn't sync safe, only warn 🐛`210`
* Removed PEDANTIC mode
* Tools:
* Add signal handling 🐛`170`
* mid3cp: Make it work under Windows.
* mutagen-inspect: Make it work under Windows+Python3 🐛`216`
* Support unicode file paths under Windows+Python2 🐛`214`
* Support file paths with invalid encoding under Unix+Python3.
Problems found with existing distfiles:
/pub/pkgsrc/distfiles/amp-0.7.6.tgz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-music-32000-1.0.8.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-music-48000-1.0.8.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-en-us-callie-32000-1.0.22.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-en-us-callie-48000-1.0.22.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-32000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-48000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-16000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-32000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-48000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-8000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-32000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-48000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-32000-1.0.13.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-48000-1.0.13.tar.gz
/pub/pkgsrc/distfiles/kid3-3.3.0.tar.gz
/pub/pkgsrc/distfiles/libdca-0.0.5.tar.bz2
/pub/pkgsrc/distfiles/mp3to.gz
/pub/pkgsrc/distfiles/squeezeboxserver-7.5.1-noCPAN.tgz
No changes made to these file.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
either because they themselves are not ready or because a
dependency isn't. This is annotated by
PYTHON_VERSIONS_INCOMPATIBLE= 33 # not yet ported as of x.y.z
or
PYTHON_VERSIONS_INCOMPATIBLE= 33 # py-foo, py-bar
respectively, please use the same style for other packages,
and check during updates.
Use versioned_dependencies.mk where applicable.
Use REPLACE_PYTHON instead of handcoded alternatives, where applicable.
Reorder Makefile sections into standard order, where applicable.
Remove PYTHON_VERSIONS_INCLUDE_3X lines since that will be default
with the next commit.
Whitespace cleanups and other nits corrected, where necessary.
1.20 - 2010.08.04
* ASF: Don't store blocks over 64K in the MetadataObject block;
use the MetadataLibraryBlock instead. (#60, Luká# Lalinský)
* ID3: Faster parsing of files with lots of padding. (#65, Christoph Reiter)
* FLAC: Correct check for audio data start. (#67)
Patch provided by Wen Heping via PR#42851.
1.19 - 2010.02.18
* ID3:
* POPM: 'count' is optional; the attribute may not exist. (#33)
* TimeStampTextFrame: Fix a TypeError in unicode comparisons. (#43)
* MakeID3v1: Translate TYER into ID3v1 year if TDRC is not present. (#42)
* mid3v2:
* Allow --delete followed by --frame, and --genre 1 --genre 2. (#37)
* Add --quiet and --verbose flags. (#40)
* moggsplit: --m3u option to write an M3U playlist of the new files. (#39)
* mid3iconv: Fix crash when processing TCML or TIPL frames. (#41)
* VCommentDict: Correctly normalize key names for .keys() iterator. (#45)
* MP3: Correct length calculation for MPEG-2 files. (#46)
* oggflac: Fix typo in docstring. (#53)
* EasyID3: Force UTF-8 encoding. (#54)
* EasyMP4: Fix 'genre' translation. (#56)
1.18 - 2009.10.22
* ASF:
* Distinguish between empty and absent tag values in
ContentDescriptionObjects. (#29)
* mid3iconv:
* Fix a crash when processing empty (invalid) text frames.
* MAJOR API INCOMPATIBILITY!!!!
* EasyID3FileType is now in mutagen.easyid3, not mutagen.id3. This
change was necessary to restore API compatibility with 1.16, as
1.17 accidentally contained a circular import preventing
mutagen.easyid3 from importing by itself. (#32)
1.17 - 2009.10.07
* ID3:
* Support for the iTunes non-standard TSO2 and TSOC frames.
* Attempt to recover from bad SYLT frames. (#2)
* Attempt to recover from faulty extended header flags. (#4, #21)
* Fix a bug in ID3v2.4 footer flag detection, (#5)
* MP4:
* Don't fail or double-encode UTF-8 strings when given a str.
* Don't corrupt 64 bit atom sizes when resizing atoms. (#17)
* EasyID3:
* Extension API for defining new "easy" tags at runtime.
* Support for many, many more tags.
* OggVorbis, OggSpeex: Handle bitrates below 0 as per the spec. (#30)
* EasyMP4: Like EasyID3, but for iTunes MPEG-4 files.
* mutagen.File: New 'easy=True' argument to create new EasyMP3, EasyMP4,
EasyTrueAudio, and EasyID3FileType instances.
1.16 - 2009.06.15
* Website / code repository move.
* Bug Fixes:
* EasyID3: Invalid keys now raise KeyError (and ValueError).
* mutagen.File: .flac files with an ID3 tag will be opened as FLAC.
* MAJOR API INCOMPATIBILITY!!!!
* Python 2.6 has required us to rename the .format attribute of M4A/MP4
cover atoms, because it conflicts with the new str.format method.
It has been renamed .imageformat.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
- assume that Python 2.4 and 2.5 are compatible and allow checking for
fallout.
- remove PYTHON_VERSIONS_COMPATIBLE that are obsoleted by the 2.3+
default. Modify the others to deal with the removals.
1.10 - 2007.01.21
* New Features:
* FLAC: Skip ID3 tags. Added option to delete them on save.
* EncodedTextSpec: Make private members more private.
* Corrupted Oggs generated by GStreamer (e.g. Sound Juicer) can be read.
* FileTypes have a .mime attribute which is a list of likely MIME types
for the file.
* ASF (WMA/WMV) support.
* Bug Fixes:
* ID3: Fixed reading of v2.3 tags with unsynchronized data.
* ID3: The data length indicator for compressed tags is written
as a synch-safe integer.