11.42.0 - 2018-12-26
2-------------------
3
4* ID3: Always read id3v1 tags and include them when no id3v2 equivalent
5  exists. Can be disabled with the new ``load_v1`` option,
6  see :meth:`id3.ID3.load`
7  :pr:`357` (:user:`Fredrik Strupe <frestr>`)
8* ID3: Add a pretty print implementation for SYLT
9  :pr:`359` (:user:`Hamid Alaei Varnosfaderani <halaei>`)
10* vorbis: Improved error messages when validating keys/values
11  :pr:`356` (:user:`Michael Booth <MJuddBooth>`)
12* Fix pylint warnings when using the various ``save()`` methods :pr:`364`
13
14
151.41.1 - 2018-08-11
16-------------------
17
18* MP4: fix rtng, stik, shwm getting saved as 16bit ints instead of 8bit :bug:`349`
19
20
211.41.0 - 2018-07-15
22-------------------
23
24* Documentation fixes :pr:`342` (:user:`Jakub Wilk <jwilk>`)
25* mid3v2: Add support for WXXX frames :bug:`344` :bug:`348`
26* Fix decoding of track_peak from MP3 Info Tag :pr:`345`
27  (:user:`Anton Yuzhaninov <citrin>`)
28* MonkeysAudio: set bits_per_sample for older files :bug:`347`
29
30
311.40.0 - 2018-01-25
32-------------------
33
34* APEv2: Ensures tags are saved in a deterministic way :pr:`329`
35  (:user:`cushy007`)
36* Restore WinXP support for the CLI tools :bug:`332`
37* easymp4: Fix EasyMP4.add_tags() when no tags exist :bug:`334`
38* id3: Fix PyCharm not being able to resolve id3 frame class references
39  :bug:`336`
40* Support pathlib.Path objects for paths (PEP 519) :bug:`337` :pr:`338`
41  (:user:`Andrew Rabert <nvllsvm>`)
42* Use semver for versioning
43
44
451.39 - 2017-11-05
46-----------------
47
48* Tests:
49
50  * Require `hypothesis <https://hypothesis.readthedocs.io>`__
51  * Run pycodestyle/pyflakes tests by default. Skip with ``--no-quality`` or
52    ``-m no quality`` when using pytest directly.
53
54* Python 3.3 is no longer supported
55* MP3: Improved bitrate accuracy for files with XING header :bug:`328`
56  (thanks :user:`Michaël Defferrard <mdeff>`)
57* ASF: Fix case where some tags resulted in broken ASFUnicodeAttribute
58  instances :bug:`324`
59* Add support for filesystems which don't support opening files read/write
60  (gvfs over fuse for example) :bug:`300`
61* mid3v2: Add support for USLT :bug:`306`
62* Minor improvements by :user:`Borewit` and
63  :user:`Evan Purkhiser <EvanPurkhiser>`
64
65
661.38 - 2017-06-01
67-----------------
68
69* Note: New release tarballs are now hosted on github:
70  https://github.com/quodlibet/mutagen/releases
71* ID3:
72
73  * Add iTunes grouping frame `id3.GRP1` :bug:`304`
74  * Fix exposing text frames where the text can't be encoded with the
75    reported encoding due to merging of frames :bug:`307`
76
77* OGG: Fix wrong StreamInfo.length (small negative value) for all
78  ogg based formats in rare cases. :bug:`308`
79
80
811.37 - 2017.02.24
82-----------------
83
84* Relicense "GPLv2" → "GPLv2 or later" :bug:`291`
85* DSF: add `mutagen.dsf` module for DSF (DSD Stream File) support
86  :pr:`283` (Boris Pruessmann)
87* MP3: Add `mp3.MPEGInfo.encoder_settings` containing a guess of the encoder
88  settings used, for example ``"-V2"`` for LAME :bug:`66`
89* ID3: add iTunes movement related frames `id3.MVIN` and `id3.MVNM`
90* MP4: support ``©mvi``, ``©mvc``, ``shwm``, ``stik``, ``rtng``, ``tves``,
91  ``tvsn``, ``plID``, ``cnID``, ``geID``, ``atID``, ``sfID``, ``cmID``,
92  ``akID`` :bug:`130`
93
94
951.36.3 - 2017.02.24
96-------------------
97
98* MP3: fix error with xing frames without a frame count :bug:`292`
99
100
1011.36.2 - 2017.01.25
102-------------------
103
104* ID3: Always write little endian utf-16 with BOM.
105  Fixes tests on big endian machines :pr:`289`
106
107
1081.36.1 - 2017.01.22
109-------------------
110
111* Support GAE runtime :bug:`286`
112* FLAC: Fix crash when loading files with zero samples :bug:`287`
113* MP3: Handle broken lame tags written by older lame versions
114
115
1161.36 - 2016.12.22
117-----------------
118
119* ID3: Ignore trailing empty values for v2.3 text frames :bug:`276`
120* ID3: Write large APIC frames last :bug:`278`
121* EasyID3: support saving as v2.3 :bug:`188`
122* FLAC: Add StreamInfo.bitrate :bug:`279`
123* mid3cp: Add ``--merge`` option :bug:`277`
124* MP4: Allow loading files without audio tracks :bug:`272`
125
126
1271.35.1 - 2016.11.09
128-------------------
129
130* Revert back to distutils :bug:`273`
131
132
1331.35 - 2016.11.02
134-----------------
135
136* Tests: Require pytest
137* Tools: Install .exe launchers on Windows
138* setup.py: Require setuptools
139* ID3:
140
141  * Fix loading files with CRM frames :bug:`239`
142  * Fix loading AENC, LINK, GRID frames with no payload
143  * Merge duplicate text frames with same key on load :bug:`172`
144  * Allow parsing of duplicate APIC frames :bug:`172`
145  * Parse utf-16 text fields with missing BOM :bug:`267`
146  * Increase max resyncs for the mpeg frame search :bug:`268`
147
148
1491.34.1 - 2016.08.13
150-------------------
151
152* ID3: Expose some internals again to make Picard (mostly) work again.
153
154  * http://tickets.musicbrainz.org/browse/PICARD-833
155  * https://github.com/metabrainz/picard/pull/479
156
157
1581.34 - 2016.07.20
159-----------------
160
161* ID3:
162
163  * Add `CTOC <id3.CTOC>` and `CHAP <id3.CHAP>` frames. New classes:
164    `ID3Tags <id3.ID3Tags>`, `CTOCFlags <id3.CTOCFlags>`. :bug:`6`
165  * Add `TCAT <id3.TCAT>`, `TKWD <id3.TKWD>`, `PCST <id3.PCST>` frames.
166    :bug:`249`
167  * Validate user provided LNK/LINK frameid. :bug:`242`
168  * Add `RVAD <id3.RVAD>`, RVA frames
169  * Add TST, TSA, TS2, TSP and TSC frames
170  * Fix not writing optional fields when saving to v2.3
171  * Add default field values for all frames
172
173* Drop Python 2.6 support
174* EasyID3: Fix TXXX frame encoding when setting a non-latin1 encodable
175  value after a latin1 one. :bug:`263`
176
177
1781.33.2 - 2016.07.05
179-------------------
180
181* Fix loading of small ogg/apev2 files (1.33 regression)
182
183
1841.33.1 - 2016.06.29
185-------------------
186
187* Fix Overeager deprecation warnings :bug:`261`
188
189
1901.33 - 2016.06.29
191-----------------
192
193* FileType, Metadata: File-like object support :bug:`1`
194* mid3v2: Add APIC support. :bug:`47`
195* EasyID3: Fix handling of RVA2 frames with non-lowercase description
196  :bug:`215`
197* mid3v2: Add UFID support. :bug:`234`
198* ID3: Include human-readable representation of the picture type in
199  APIC._pprint() :bug:`244`
200* EasyID3: make albumartist use TPE2 and move performer to TXXX. :bug:`252`
201* ID3: id3.ID3TimeStamp comparator: check type :pr:`260`
202  (Fabian Peter Hammerle)
203* setup.py: follow PEP440 for the development version
204* FileType/Metadata.load/save/delete no longer raise IOError or IOError
205  subclasses. They only raise subclasses of MutagenError.
206
207
2081.32 - 2016.05.02
209-----------------
210
211* Add basic SMF (Standard MIDI File) support (:mod:`mutagen.smf`)
212* FLAC: add ``audio/flac`` mime type. :bug:`235`
213* ASF: Fixed crash when object size is longer than the header and file length
214  (Ben Ockmore)
215* ID3: Validate attributes set after frame creation :commit:`69368c31e00`
216  (:user:`Daniel Plachotich <danpla>`)
217* MP4: validate values in ``__setitem__`` so things don't fail in save()
218  :bug:`236`
219* tests: Fix SynchronizedTextSpec test on big-endian machines :bug:`247`
220  (Daniel Plachotich)
221* ID3: do type checking in ``__setitem__`` :bug:`251`
222* Building the documentation now requires sphinx >= 1.3
223* New :class:`mutagen.Tags` base class for tags
224* Moved from Bitbucket to GitHub
225
226
2271.31 - 2015.09.10
228-----------------
229
230* New padding control API for flac/id3/mp4/asf/ogg/aiff and everything
231  based on it, except oggflac :bug:`229`
232* Mutagen will now reduce padding on save if there is lots of it.
233* delete() will remove padding in addition to tags.
234
235* ASF:
236
237  * Padding support :bug:`201`
238  * Don't report negative lengths for some broken files
239  * New :class:`asf.ASFInfo`.codec_type/codec_name/codec_description
240  * Implement ASF.delete()
241
242* OGG: Padding support for Opus/Vorbis/Theora/Speex
243* M4A: Implementation removed. Every operation will raise. Use mp4 instead.
244* Tools: Support Unicode output under Windows :bug:`232`
245
246
2471.30 - 2015.08.22
248-----------------
249
250* FLAC:
251
252  * Fix :meth:`flac.FLAC.save` in case the source contained a too large
253    (invalid but recovered) image block :bug:`226`
254
255* MP3:
256
257  * Improved length and bitrate accuracy:
258
259    * Read lame "Info" tags for improved bitrate/length accuracy
260    * Use bytes info of VBRI headers for improved bitrate accuracy
261    * Subtract encoder delay/padding from length for improved length accuracy
262      (especially for short tracks)
263    * Fix rare false identification of Xing headers :bug:`182`
264
265  * New :class:`mp3.MPEGInfo`.encoder_info attribute containing the encoder
266    name and version :bug:`66`
267  * New :class:`mp3.MPEGInfo`.bitrate_mode attribute exposing if the file is
268    VBR, ABR or CBR :bug:`24` :bug:`66`
269  * New :class:`mp3.MPEGInfo`.channels attribute providing the channel count
270  * New :class:`mp3.MPEGInfo`.track_gain/track_peak/album_gain values exposing
271    the replaygain info provided by the lame header :bug:`36`
272
273* ID3:
274
275  * New :class:`id3.PictureType` enum for the picture type used in APIC frames :bug:`222`
276
277* MP4:
278
279  * Fix MP4FreeForm.__eq__ and MP4Cover.__eq__ when comparing with bytes
280    :bug:`218`
281
282* Don't raise on :meth:`FileType.save` if there are no tags. :bug:`227`
283* Minor fixes: :bug:`228`
284
285
2861.29 - 2015.05.09
287-----------------
288
289* mid3v2: Fix an error under Python 3 with files without tags :bug:`219`
290* mid3v2: Various Windows+Python2+Unicode fixes :bug:`214`
291* Don't emit warnings during loading (ID3Warning) :bug:`223`
292* py.test support
293
294
2951.28 - 2015.03.06
296-----------------
297
298* Various minor fixes to make mutagen behave the same under Python3 as under
299  Python2.
300* Update gpl text :bug:`205`
301* Documentation: Add example for how to create a new flac.Picture :bug:`209`
302
303* ID3:
304
305  * Various error handling fixes (:bug:`110`, :bug:`211`, ...)
306  * Don't hide ID3 loading errors with ID3FileType.
307  * In case a synch safe marked frame isn't sync safe, only warn :bug:`210`
308  * Removed PEDANTIC mode
309
310* Tools:
311
312  * Add signal handling :bug:`170`
313  * mid3cp: Make it work under Windows.
314  * mutagen-inspect: Make it work under Windows+Python3 :bug:`216`
315  * Support unicode file paths under Windows+Python2 :bug:`214`
316  * Support file paths with invalid encoding under Unix+Python3.
317
318
3191.27 - 2014.11.28
320-----------------
321
322* MP4:
323
324  * New ``MP4Info.codec`` for identifying the contained audio codec
325    e.g. ``"mp4a"``, ``"alac"``, ``"mp4a.40.2"``, ``"ac-3"`` etc.
326    :commit:`b2f22b81c77`
327  * New ``MP4Info.codec_description``: name of the audio codec
328    e.g. ``"ALAC"``, ``"AAC LC"``, ``"AC-3"``
329
330* OggOpus:
331
332  * Preserve data after vorbis comment (
333    See https://tools.ietf.org/html/draft-ietf-codec-oggopus-05#section-5.2)
334    :bug:`202`
335
336* AAC:
337
338  * New AAC FileType. Supports loading ADTS/ADIF AAC files. :bug:`15`
339
340
3411.26 - 2014.11.10
342-----------------
343
344* MP4:
345
346  * Parse channels/sample_rate/bits_per_sample/bitrate for ALAC files
347    :bug:`199` :commit:`192cfcaf14` (Adrian Sampson, Christoph Reiter)
348
349* ASF:
350
351  * Support writing multiple values for
352    Author/Title/Copyright/Description/Rating :bug:`151`
353  * Fix read order for multi value tags
354  * Various Python3 fixes
355
356* EasyID3: Add more tag mappings :bug:`136` (Ben Ockmore)
357
358* MPC/SV8: Fix parsing of SH packets with padding :bug:`198`
359
360* docs:
361
362  * New logo :commit:`b728fa75` (:user:`Samuel Messner <obskyr>`)
363  * Add examples for handling cover art in vorbiscomment :bug:`200`
364  * Add examples for id3v2.3
365
366
3671.25.1 - 2014.10.13
368-------------------
369
370* ID3: Fix parsing of some files with Python 3 :bug:`194`
371
372
3731.25 - 2014.10.03
374-----------------
375
376* Python 3 support (Ben Ockmore et al) :bug:`27`
377  Supported: Python 2.6, 2.7, 3.3, 3.4 (CPython and PyPy)
378* All custom exceptions now have a common mutagen.MutagenError base class
379* mutagen.File: prefer theora over vorbis/flac streams in ogg :bug:`184`
380* New mid3cp script for copying id3 tags :bug:`178`
381  (Marcus Sundman, Ben Ockmore)
382
383* ID3:
384
385  * Parse 2.3/4 frames with 2.2 names :bug:`177`
386  * Try to detect apev2 tags when looking for id3v1 tags :bug:`122`
387  * New id3.Encoding, id3.ID3v1SaveOptions enums :bug:`190`
388
389* ASF:
390
391  * Raise a proper exception on invalid utf-16 :bug:`127`
392
393* APEv2:
394
395  * Fix UnicodeDecodeError during parsing :bug:`174`
396
397* MP4:
398
399  * Fix struct.error exception during parsing :bug:`119`
400  * New AtomDataType enum for MP4FreeForm.dataformat values
401  * Read some previously ignored purl/egit atoms
402  * Read multi value reverse DNS tags written by foobar2000
403  * Read multi value atoms written by MusicBee :bug:`165`
404  * Write back unknown atoms and ones that failed to parse.
405
406
4071.24 - 2014.08.13
408-----------------
409
410* Moved to Bitbucket: https://bitbucket.org/lazka/mutagen
411* ID3:
412
413  * Parse utf-16 text frames with wrong termination :bug:`169`
414  * Fix parsing of utf-16 SYLT frames :bug:`173`
415
416* WavPack:
417
418  * Fix length calculation if sample count is missing in the header :bug:`180`
419
420* setup.py: Don't install leftover files produced by the test suite :bug:`179`
421* tests: Fix error with POSIX locale :bug:`181`
422
4231.23 - 2014.05.14
424-----------------
425
426* tools: Don't crash in misconfigured envs, fall back to utf-8.
427* mp3: Return correct mimetype for MP2 files. :bug:`163`
428* id3: deterministic sorting of frames. :bug:`166`
429* AIFF support :bug:`146` (Evan Purkhiser)
430
4311.22 - 2013.09.08
432-----------------
433
434* Minimum required Python version is now 2.6
435* Online API reference at https://mutagen.readthedocs.org/
436* EasyID3:
437
438  * Fix crash with empty TXXX values. :bug:`135`
439
440* ID3:
441
442  * id3v2.3 writing support :bug:`85`
443  * Add iTunes podcast frames (TGID, TDES, WFED) :bug:`141`
444  * Updated id3v1 genre list
445
446* MP4:
447
448  * add_tags() will not replace existing tags. :bug:`101`
449  * Don't ignore tags if parsing unknown atoms fails.
450  * Raise on invalid 64bit atom size :bug:`132` (Sidnei da Silva)
451
452* APEv2:
453
454  * Handle invalid tag item count. :bug:`145` (Dawid Zamirski)
455
456* Ogg:
457
458  * Faster parsing of files with large packets.
459
460* VComment:
461
462  * Preserve text case for field names added through the dict interface
463    :bug:`152`
464
465* mid3v2:
466
467  * New -e,--escape switch to enable interpretation of escape sequences and
468    makes escaping of the colon separator possible. :bug:`159`
469
470* mid3iconv:
471
472  * Convert COMM frames :bug:`128`
473
4741.21 - 2013.01.30
475-----------------
476
477* Fix Python 2.3 compatibility (broken in 1.19).
478* Fix many warnings triggered by -3. :bug:`27`
479* mid3v2:
480
481  * Add --TXXX support. :bug:`62` (Tim Phipps)
482  * Add --POPM support. :bug:`71`
483  * Allow setting multiple COMM or TXXX frames with one command line.
484
485* FLAC:
486
487  * Try to handle corrupt Vorbis comment block sizes. :bug:`52`
488  * Try to handle corrupt Picture block sizes :bug:`106` (Christoph Reiter)
489  * Don't leak file handle with PyPy :bug:`111` (Marien Zwart)
490
491* ID3:
492
493  * MakeID3v1: Do not generate bad tags when given short dates. :bug:`69`
494  * ParseID3v1: Parse short (< 128 byte) tags generated by old Mutagen
495    implementations of MakeID3v1, and tags with garbage on the front.
496  * pprint: Sort frames by name.
497  * Upgrade unknown 2.3 frames :bug:`97` (Christoph Reiter)
498  * Fix handling of invalid SYLT frames :bug:`105` (Christoph Reiter)
499
500* MP3:
501
502  * Fix error when loading extremely small MP3s. :bug:`72`
503  * Fix rounding error in CBR length calculation :bug:`93` (Christoph Reiter)
504
505* Use 'open' rather than 'file' everywhere. :bug:`74` (Dan Callahan)
506* mid3iconv:
507
508  * Accurately copy QL-style frame encoding behavior. :bug:`75`
509  * Skip unopenable files. :bug:`79`
510
511* ID3FileType:
512
513  * Remember which tag type load() was called with even if the file
514    doesn't yet have any ID3 tags. :bug:`89`
515
516* VComment:
517
518  * Prevent MemoryError when parsing invalid header :bug:`112`
519    (Jyrki Pulliainen)
520
521* ASF:
522
523  * Don't corrupt files on the second save() call :bug:`81` (Christoph Reiter)
524  * Always store GUID objects in the MetadataLibraryBlock :bug:`81`
525
526* OggTheora: Fix length/bitrate calculation. :bug:`99` (Christoph Reiter)
527* MP4:
528
529  * Less strict MP4 covr atom parsing. :bug:`86` (Lukáš Lalinský)
530  * Support atoms that extend to the end of the file. :bug:`109`
531    (Sidnei da Silva)
532  * Preserve freeform format flags :bug:`103` (Christoph Reiter)
533
534* OggOpus support. :bug:`115` (Christoph Reiter)
535* Musepack:
536
537  * Fix SV7 bitrate calculation :bug:`7` (Christoph Reiter)
538  * Support SV8 :bug:`7` (Christoph Reiter)
539
5401.20 - 2010.08.04
541-----------------
542
543* ASF: Don't store blocks over 64K in the MetadataObject block;
544  use the MetadataLibraryBlock instead. :bug:`60` (Lukáš Lalinský)
545* ID3: Faster parsing of files with lots of padding. :bug:`65`
546  (Christoph Reiter)
547* FLAC: Correct check for audio data start. :bug:`67`
548
5491.19 - 2010.02.18
550-----------------
551
552* ID3:
553
554  * POPM: 'count' is optional; the attribute may not exist. :bug:`33`
555  * TimeStampTextFrame: Fix a TypeError in unicode comparisons. :bug:`43`
556  * MakeID3v1: Translate TYER into ID3v1 year if TDRC is not present. :bug:`42`
557
558* mid3v2:
559
560  * Allow --delete followed by --frame, and --genre 1 --genre 2. :bug:`37`
561  * Add --quiet and --verbose flags. :bug:`40`
562
563* moggsplit: --m3u option to write an M3U playlist of the new files. :bug:`39`
564* mid3iconv: Fix crash when processing TCML or TIPL frames. :bug:`41`
565* VCommentDict: Correctly normalize key names for .keys() iterator. :bug:`45`
566* MP3: Correct length calculation for MPEG-2 files. :bug:`46`
567* oggflac: Fix typo in docstring. :bug:`53`
568* EasyID3: Force UTF-8 encoding. :bug:`54`
569* EasyMP4: Fix 'genre' translation. :bug:`56`
570
5711.18 - 2009.10.22
572-----------------
573
574* ASF:
575
576  * Distinguish between empty and absent tag values in
577    ContentDescriptionObjects. :bug:`29`
578
579* mid3iconv:
580
581  * Fix a crash when processing empty (invalid) text frames.
582
583* MAJOR API INCOMPATIBILITY!!!!
584
585  * EasyID3FileType is now in mutagen.easyid3, not mutagen.id3. This
586    change was necessary to restore API compatibility with 1.16, as
587    1.17 accidentally contained a circular import preventing
588    mutagen.easyid3 from importing by itself. :bug:`32`
589
5901.17 - 2009.10.07
591-----------------
592
593* ID3:
594
595  * Support for the iTunes non-standard TSO2 and TSOC frames.
596  * Attempt to recover from bad SYLT frames. :bug:`2`
597  * Attempt to recover from faulty extended header flags. :bug:`4` :bug:`21`
598  * Fix a bug in ID3v2.4 footer flag detection, :bug:`5`
599
600* MP4:
601
602  * Don't fail or double-encode UTF-8 strings when given a str.
603  * Don't corrupt 64 bit atom sizes when resizing atoms. :bug:`17`
604
605* EasyID3:
606
607  * Extension API for defining new "easy" tags at runtime.
608  * Support for many, many more tags.
609
610* OggVorbis, OggSpeex: Handle bitrates below 0 as per the spec. :bug:`30`
611* EasyMP4: Like EasyID3, but for iTunes MPEG-4 files.
612* mutagen.File: New 'easy=True' argument to create new EasyMP3, EasyMP4,
613  EasyTrueAudio, and EasyID3FileType instances.
614
6151.16 - 2009.06.15
616-----------------
617
618* Website / code repository move.
619* Bug Fixes:
620
621  * EasyID3: Invalid keys now raise KeyError (and ValueError).
622  * mutagen.File: .flac files with an ID3 tag will be opened as FLAC.
623
624* MAJOR API INCOMPATIBILITY!!!!
625
626  * Python 2.6 has required us to rename the .format attribute of M4A/MP4
627    cover atoms, because it conflicts with the new str.format method.
628    It has been renamed .imageformat.
629
6301.15 - 2008.12.01
631-----------------
632
633* Bug Fixes:
634
635  * mutagen.File: Import order no longer affects what type is returned.
636  * mutagen.id3: Compression of frames is now disabled.
637  * mutagen.flac.StreamInfo: Fix channel mask (support channels > 2). :bug:`35`
638  * mutagen.mp3: Ignore Xing headers if they are obviously wrong.
639
6401.14 - 2008.05.31
641-----------------
642
643* Bug Fixes:
644
645  * MP4/M4A: Fixed saving of atoms with 64-bit size on 64-bit platforms.
646  * MP4: Conversion of 'gnre' atoms to '\xa9gen' text atoms now correctly
647    produces a list of string values, not just a single value.
648  * ID3: Broken RVA2 frames are now discarded. (Vladislav Naumov)
649  * ID3: Use long integers when appropriate.
650  * VCommentDict: Raise UnicodeEncodeErrors when trying to use a Unicode
651    key that is not valid ASCII; keys are also normalized to ASCII
652    str objects. (Forest Bond)
653
654* Tests:
655  * FLAC: Use 2**64 instead of 2**32 to test overflow behavior.
656
6571.13 - 2007.12.03
658-----------------
659
660* Bug Fixes:
661
662  * FLAC: Raise IOError, instead of UnboundLocalError, when trying
663    to open a non-existent file. (Lukáš Lalinský, Debian #448734)
664  * Throw out invalid frames when upgrading from 2.3 to 2.4.
665  * Fixed reading of Unicode strings from ASF files on big-endian
666    platforms.
667
668* TCP/TCMP support. (Debian #452231)
669* Faster implementation of file-writing when mmap fails, and
670  exclusive advisory locking when available.
671* Test cases to ensure Mutagen is not vulnerable to CVE-2007-4619.
672  It is not now, nor was it ever.
673* Use VBRI header to calculate length of VBR MP3 files if the Xing
674  header is not found.
675
6761.12 - 2007.08.04
677-----------------
678
679* Write important ID3v2 frames near the start. (Lukáš Lalinský)
680* Clean up distutils functions.
681
6821.11 - 2007.04.26
683-----------------
684
685* New Features:
686
687  * mid3v2 can now set URL frames. (Vladislav Naumov)
688  * Musepack: Skip ID3v2 tags. (Lukáš Lalinský)
689
690* Bug Fixes:
691
692  * mid3iconv: Skip all timestamp frames. (Lukáš Lalinský)
693  * WavPack: More accurate length calculation. ('ak')
694  * PairedTextFrame: Fix typo in documentation. (Lukáš Lalinský)
695  * ID3: Fixed incorrect TDAT conversion. The format is DDMM, not
696    MMDD. (Lukáš Lalinský)
697
698* API:
699
700  * Metadata no longer inherits from dict.
701  * Relatedly, the MRO has changed on several types.
702  * More documentation for MP4 atoms. (Lukáš Lalinský)
703  * Prefer MP3 for files with unknown extensions and ID3 tags.
704
7051.10.1 - 2007.01.23
706-------------------
707
708* Bug Fixes:
709
710  * Documentation mentions ASF support.
711  * APEv2 flags and valid keys are fixed.
712  * Tests pass on Python 2.3 again.
713
7141.10 - 2007.01.21
715-----------------
716
717* New Features:
718
719  * FLAC: Skip ID3 tags. Added option to delete them on save.
720  * EncodedTextSpec: Make private members more private.
721  * Corrupted Oggs generated by GStreamer (e.g. Sound Juicer) can be read.
722  * FileTypes have a .mime attribute which is a list of likely MIME types
723    for the file.
724  * ASF (WMA/WMV) support.
725
726* Bug Fixes:
727
728  * ID3: Fixed reading of v2.3 tags with unsynchronized data.
729  * ID3: The data length indicator for compressed tags is written
730    as a synch-safe integer.
731
7321.9 - 2006.12.09
733----------------
734
735* New Features:
736
737  * OptimFROG support.
738  * New mutagen.mp4 module with support for multiple data fields per atom
739    and more compatible tag saving implementation.
740  * Support for embedded pictures in FLAC files (new in FLAC 1.1.3).
741
742* mutagen.m4a is deprecated in favor of mutagen.mp4.
743
7441.8 - 2006.10.02
745----------------
746
747* New Features:
748
749  * MonkeysAudio support. (#851, Lukáš Lalinský)
750  * APEv2 support on Python 2.5; see API-NOTES. (#852)
751
7521.7.1 - 2006.09.24
753------------------
754
755* Bug Fixes:
756
757  * Expose full ID3 tag size as .size. (#848)
758
759* New Features:
760
761  * Musepack Replay Gain data is available in SV7 files.
762
7631.7 - 2006.09.15
764----------------
765
766* Bug Fixes:
767
768  * Trying to save an empty tag deletes it. (#813)
769  * The semi-public API removal mentioned in 1.6's API-NOTES happened.
770  * Stricter frame ID validation. (#830, Lukáš Lalinský)
771  * Use os.path.devnull on Win32/Mac OS X. (#831, Lukáš Lalinský)
772
773* New Features:
774
775  * FLAC cuesheet and seektable support. (#791, Nuutti Kotivuori)
776  * Kwargs can be passed to ID3 constructors. (#824, Lukáš Lalinský)
777  * mutagen.musepack: Read/tag Musepack files. (#825, Lukáš Lalinský)
778
779* Tools:
780
781  * mutagen-inspect responds immediately to keyboard interrupts.
782
7831.6 - 2006.08.09
784----------------
785
786* Bug Fixes:
787
788  * IOError rather than NameError is raised when File succeeds in
789    typefinding but fails in stream parsing.
790  * errors= kwarg is correctly interpreted for FLAC tags now.
791  * Handle struct.pack API change in Python 2.5b2. (SF #1530559)
792  * Metadata 'load' methods always reset in-memory tags.
793  * Metadata 'delete' methods always clear in-memory tags.
794
795* New Features:
796
797  * Vorbis comment vendor strings include the Mutagen version.
798  * mutagen.id3: Read ASPI, ETCO, SYTC, MLLT, EQU2, and LINK frames.
799  * mutagen.m4a: Read/tag MPEG-4 AAC audio files with iTunes tags. (#681)
800  * mutagen.oggspeex: Read/tag Ogg Speex files.
801  * mutagen.trueaudio: Read/tag True Audio files.
802  * mutagen.wavpack: Read/tag WavPack files.
803
804* Tools:
805
806  * mid3v2: --delete-frames. (#635)
807
8081.5.1 - 2006.06.26
809------------------
810
811* Bug Fixes:
812
813  * Handle ENODEV from mmap (e.g. on fuse+sshfs).
814  * Reduce test rerun time.
815
8161.5 - 2006.06.20
817----------------
818
819* Bug Fixes:
820
821  * APEv2
822
823    * Invalid Lyrics3v2 tags are ignored/overwritten.
824    * Binary values are autodetected as documented.
825
826  * OggVorbis, OggFLAC:
827
828    * Write when the setup packet spans multiple pages.
829    * Zero granule position for header packets.
830
831* New Features:
832
833  * mutagen.oggtheora: Read/tag Ogg Theora files.
834  * Test Ogg formats with ogginfo, if present.
835
8361.4 - 2006.06.03
837----------------
838
839* Bug Fixes:
840
841  * EasyID3: Fix tag["key"] = "string" handler. (#693)
842  * APEv2:
843
844    * Skip Lyrics3v2 tags. (Miguel Angel Alvarez)
845    * Avoid infinite loop on malformed tags at the start of the file.
846
847  * Proper ANSI semantics for file positioning. (#707)
848
849* New Features:
850
851  * VComment: Handle malformed Vorbis comments when errors='ignore' or
852    errors='replace' is passed to VComment.load.
853    (Bastian Kleineidam, #696)
854  * Test running is now controlled through setup.py (./setup.py test).
855  * Test coverage data can be generated (./setup.py coverage).
856  * Considerably more test coverage.
857
8581.3 - 2006.05.29
859----------------
860
861* New Features:
862
863  * mutagen.File: Automatic file type detection.
864  * mutagen.ogg: Generic Ogg stream parsing. (#612)
865  * mutagen.oggflac: Read/tag Ogg FLAC files.
866  * mutagen.oggvorbis no longer depends on pyvorbis.
867  * ID3: SYLT support. (#672)
868
8691.2 - 2006.04.23
870----------------
871
872* Bug Fixes:
873
874  * MP3: Load files with zeroed Xing headers. (#626)
875  * ID3: Upgrade ID3v2.2 PIC tags to ID3v2.4 APIC tags properly.
876  * Tests exit with non-zero status if any have failed.
877  * Full dict protocol support for VCommentDict, FileType, and APEv2 objects.
878
879* New features:
880
881  * mutagen.oggvorbis gives pyvorbis a Mutagen-like API.
882  * mutagen.easyid3 makes simple ID3 tag changes easier.
883  * A brief TUTORIAL was added.
884
885* Tools:
886
887  * mid3iconv, a clone of id3iconv, was added by Emfox Zhou. (#605)
888
8891.1 - 2006.04.04
890----------------
891
892* ID3:
893
894  * Frame and Spec objects are not hashable.
895  * COMM, USER: Accept non-ASCII (completely invalid) language codes.
896  * Enable redundant data length bit for compressed frames.
897
8981.0 - 2006.03.13
899----------------
900
901* mutagen.FileType, an abstract container for tags and stream information.
902* MP3: A new FileType subclass for MPEG audio files.
903* FLAC:
904
905  * Add FLAC.delete.
906  * Raise correct exception when saving to a non-FLAC file.
907  * FLAC.vc is deprecated in favor of FLAC.tags.
908
909* VComment (used by FLAC):
910
911  * VComment.clear to clear all tags.
912  * VComment.as_dict to return a dict of the tags.
913
914* ID3:
915
916  * Fix typos in PRIV._pprint, OWNE._pprint, UFID._pprint.
917
918* mutagen-pony: Try finding lengths as well as tags.
919* mutagen-inspect: Output stream information with tags.
920
9210.9 - 2006.02.21
922----------------
923
924* Initial release.
925