audiometa-python 0.8.0__tar.gz → 0.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. {audiometa_python-0.8.0/audiometa_python.egg-info → audiometa_python-0.9.0}/PKG-INFO +11 -11
  2. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/README.md +10 -10
  3. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/__init__.py +30 -6
  4. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/cli.py +3 -0
  5. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/riff/_RiffManager.py +198 -406
  6. audiometa_python-0.9.0/audiometa/manager/_rating_supporting/riff/_riff_bext_chunk.py +323 -0
  7. audiometa_python-0.9.0/audiometa/manager/_rating_supporting/riff/_riff_file_structure.py +158 -0
  8. audiometa_python-0.9.0/audiometa/manager/_rating_supporting/riff/_riff_info_chunk.py +163 -0
  9. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/vorbis/_VorbisManager.py +9 -5
  10. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/riff_metadata_setter.py +1 -0
  11. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/vorbis/vorbis_metadata_setter.py +1 -0
  12. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_comprehensive.py +4 -0
  13. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_comprehensive.py +6 -0
  14. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/test_format_specific_workflows.py +59 -1
  15. audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/description/test_deleting.py +52 -0
  16. audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/description/test_reading.py +37 -0
  17. audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/description/test_writing.py +68 -0
  18. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/test_metadata_field_validation.py +4 -3
  19. audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies/sync_strategy/__init__.py +1 -0
  20. audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies/sync_strategy/test_flac_sync.py +306 -0
  21. audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies/sync_strategy/test_mp3_sync.py +174 -0
  22. audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies/sync_strategy/test_wav_sync.py +306 -0
  23. audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/writing/__init__.py +0 -0
  24. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/unified_metadata_key.py +2 -0
  25. {audiometa_python-0.8.0 → audiometa_python-0.9.0/audiometa_python.egg-info}/PKG-INFO +11 -11
  26. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa_python.egg-info/SOURCES.txt +11 -2
  27. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/pyproject.toml +1 -1
  28. audiometa_python-0.8.0/audiometa/test/tests/integration/audio_format/wav/test_wav_with_id3v2_tags.py +0 -83
  29. audiometa_python-0.8.0/audiometa/test/tests/integration/writing/writing_strategies/test_sync_strategy.py +0 -279
  30. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/LICENSE +0 -0
  31. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/__main__.py +0 -0
  32. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/_audio_file.py +0 -0
  33. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/exceptions.py +0 -0
  34. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_MetadataManager.py +0 -0
  35. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/__init__.py +0 -0
  36. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/_RatingSupportingMetadataManager.py +0 -0
  37. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/__init__.py +0 -0
  38. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/id3v2/_Id3v2Manager.py +0 -0
  39. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/id3v2/__init__.py +0 -0
  40. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/id3v2/_id3v2_constants.py +0 -0
  41. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/riff/__init__.py +0 -0
  42. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/riff/_riff_constants.py +0 -0
  43. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/vorbis/__init__.py +0 -0
  44. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/_rating_supporting/vorbis/_vorbis_constants.py +0 -0
  45. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/id3v1/_Id3v1Manager.py +0 -0
  46. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/id3v1/__init__.py +0 -0
  47. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/id3v1/_constants.py +0 -0
  48. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/id3v1/id3v1_raw_metadata.py +0 -0
  49. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/manager/id3v1/id3v1_raw_metadata_key.py +0 -0
  50. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/__init__.py +0 -0
  51. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/assets/create_test_files.py +0 -0
  52. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/__init__.py +0 -0
  53. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/common/__init__.py +0 -0
  54. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/common/audio_file_creator.py +0 -0
  55. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/common/external_tool_runner.py +0 -0
  56. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v1/__init__.py +0 -0
  57. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v1/id3v1_header_verifier.py +0 -0
  58. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v1/id3v1_metadata_deleter.py +0 -0
  59. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v1/id3v1_metadata_getter.py +0 -0
  60. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v1/id3v1_metadata_setter.py +0 -0
  61. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/__init__.py +0 -0
  62. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/id3v2_frame_manual_creator.py +0 -0
  63. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/id3v2_header_verifier.py +0 -0
  64. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/id3v2_metadata_deleter.py +0 -0
  65. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/id3v2_metadata_getter.py +0 -0
  66. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/id3v2/id3v2_metadata_setter.py +0 -0
  67. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/__init__.py +0 -0
  68. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/riff_header_verifier.py +0 -0
  69. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/riff_manual_metadata_creator.py +0 -0
  70. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/riff_metadata_deleter.py +0 -0
  71. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/riff/riff_metadata_getter.py +0 -0
  72. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/scripts/__init__.py +0 -0
  73. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/technical_info_inspector.py +0 -0
  74. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/temp_file_with_metadata.py +0 -0
  75. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/vorbis/__init__.py +0 -0
  76. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/vorbis/vorbis_header_verifier.py +0 -0
  77. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/vorbis/vorbis_metadata_deleter.py +0 -0
  78. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/helpers/vorbis/vorbis_metadata_getter.py +0 -0
  79. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/__init__.py +0 -0
  80. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/conftest.py +0 -0
  81. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/__init__.py +0 -0
  82. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/__init__.py +0 -0
  83. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/__init__.py +0 -0
  84. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_command_structure_errors.py +0 -0
  85. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_file_access_errors.py +0 -0
  86. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_format_output_errors.py +0 -0
  87. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_input_validation_errors.py +0 -0
  88. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_missing_fields_validation.py +0 -0
  89. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_multiple_files_errors.py +0 -0
  90. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_rating_validation.py +0 -0
  91. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/error_handling/test_year_validation.py +0 -0
  92. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/__init__.py +0 -0
  93. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_basic.py +0 -0
  94. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_formats.py +0 -0
  95. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_metadata_content.py +0 -0
  96. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_multiple_files.py +0 -0
  97. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_options.py +0 -0
  98. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/read/test_unified.py +0 -0
  99. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/test_delete.py +0 -0
  100. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/test_formatting.py +0 -0
  101. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/test_help.py +0 -0
  102. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/__init__.py +0 -0
  103. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_basic.py +0 -0
  104. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_force_format.py +0 -0
  105. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_integer_fields.py +0 -0
  106. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_list_fields.py +0 -0
  107. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_rating.py +0 -0
  108. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_string_fields.py +0 -0
  109. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/cli/write/test_validation.py +0 -0
  110. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/scenarios/__init__.py +0 -0
  111. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/scenarios/test_user_scenarios.py +0 -0
  112. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/__init__.py +0 -0
  113. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/test_core_workflows.py +0 -0
  114. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/test_deletion_workflows.py +0 -0
  115. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/test_error_handling_workflows.py +0 -0
  116. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/e2e/workflows/test_rating_workflows.py +0 -0
  117. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/__init__.py +0 -0
  118. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/__init__.py +0 -0
  119. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/flac/__init__.py +0 -0
  120. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/flac/test_flac_delete_all.py +0 -0
  121. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/flac/test_flac_reading_all.py +0 -0
  122. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/flac/test_flac_reading_field.py +0 -0
  123. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/flac/test_flac_writing.py +0 -0
  124. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/mp3/__init__.py +0 -0
  125. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/mp3/test_mp3_delete_all.py +0 -0
  126. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/mp3/test_mp3_reading_all.py +0 -0
  127. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/mp3/test_mp3_reading_field.py +0 -0
  128. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/mp3/test_mp3_writing.py +0 -0
  129. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/wav/__init__.py +0 -0
  130. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/wav/test_wav_delete_all.py +0 -0
  131. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/wav/test_wav_reading_all.py +0 -0
  132. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/wav/test_wav_reading_field.py +0 -0
  133. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/audio_format/wav/test_wav_writing.py +0 -0
  134. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/conftest.py +0 -0
  135. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/delete_all_metadata/__init__.py +0 -0
  136. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/delete_all_metadata/test_audio_format_all.py +0 -0
  137. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/delete_all_metadata/test_audio_format_header_deletion.py +0 -0
  138. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/delete_all_metadata/test_basic_functionality.py +0 -0
  139. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/delete_all_metadata/test_error_handling.py +0 -0
  140. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/encoding/__init__.py +0 -0
  141. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/encoding/test_encoding.py +0 -0
  142. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/encoding/test_special_characters_edge_cases.py +0 -0
  143. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/__init__.py +0 -0
  144. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_audio_formats.py +0 -0
  145. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_binary_data_filtering.py +0 -0
  146. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_consistency.py +0 -0
  147. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_edge_cases.py +0 -0
  148. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_error_handling.py +0 -0
  149. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_get_full_metadata.py +0 -0
  150. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_options.py +0 -0
  151. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_performance.py +0 -0
  152. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_riff_bext.py +0 -0
  153. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/get_full_metadata/test_structure.py +0 -0
  154. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/__init__.py +0 -0
  155. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album/__init__.py +0 -0
  156. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album/test_deleting.py +0 -0
  157. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album/test_reading.py +0 -0
  158. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album/test_writing.py +0 -0
  159. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album_artists/__init__.py +0 -0
  160. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album_artists/test_deleting.py +0 -0
  161. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album_artists/test_reading.py +0 -0
  162. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/album_artists/test_writing.py +0 -0
  163. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/artists/__init__.py +0 -0
  164. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/artists/test_deleting.py +0 -0
  165. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/artists/test_reading.py +0 -0
  166. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/artists/test_writing.py +0 -0
  167. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/bpm/__init__.py +0 -0
  168. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/bpm/test_deleting.py +0 -0
  169. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/bpm/test_reading.py +0 -0
  170. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/bpm/test_writing.py +0 -0
  171. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/comment/__init__.py +0 -0
  172. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/comment/test_deleting.py +0 -0
  173. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/comment/test_reading.py +0 -0
  174. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/comment/test_writing.py +0 -0
  175. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/composer/__init__.py +0 -0
  176. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/composer/test_deleting.py +0 -0
  177. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/composer/test_reading.py +0 -0
  178. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/composer/test_writing.py +0 -0
  179. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/copyright/__init__.py +0 -0
  180. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/copyright/test_deleting.py +0 -0
  181. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/copyright/test_reading.py +0 -0
  182. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/copyright/test_writing.py +0 -0
  183. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/disc_number → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/description}/__init__.py +0 -0
  184. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/field_not_supported → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/disc_number}/__init__.py +0 -0
  185. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/disc_number/test_deleting.py +0 -0
  186. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/disc_number/test_reading.py +0 -0
  187. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/disc_number/test_writing.py +0 -0
  188. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/genre → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/field_not_supported}/__init__.py +0 -0
  189. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/field_not_supported/test_deleting.py +0 -0
  190. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/field_not_supported/test_reading.py +0 -0
  191. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/field_not_supported/test_writing.py +0 -0
  192. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/genre/reading → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/genre}/__init__.py +0 -0
  193. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/genre/reading}/__init__.py +0 -0
  194. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/language → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format}/__init__.py +0 -0
  195. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format/test_id3v1_reading.py +0 -0
  196. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format/test_id3v2_reading.py +0 -0
  197. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format/test_riff_reading.py +0 -0
  198. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/reading/metadata_format/test_vorbis_reading.py +0 -0
  199. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/reading/test_smart_reading.py +0 -0
  200. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/test_deleting.py +0 -0
  201. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/genre/test_writing.py +0 -0
  202. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/isrc/__init__.py +0 -0
  203. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/isrc/test_deleting.py +0 -0
  204. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/isrc/test_reading.py +0 -0
  205. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/isrc/test_writing.py +0 -0
  206. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/lyrics → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/language}/__init__.py +0 -0
  207. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/language/test_deleting.py +0 -0
  208. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/language/test_reading.py +0 -0
  209. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/language/test_writing.py +0 -0
  210. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/publisher → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/lyrics}/__init__.py +0 -0
  211. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/lyrics/test_deleting.py +0 -0
  212. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/lyrics/test_reading.py +0 -0
  213. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/lyrics/test_writing.py +0 -0
  214. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/rating → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/publisher}/__init__.py +0 -0
  215. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/publisher/test_deleting.py +0 -0
  216. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/publisher/test_reading.py +0 -0
  217. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/publisher/test_writing.py +0 -0
  218. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/rating/reading → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/rating}/__init__.py +0 -0
  219. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/rating/writing → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/rating/reading}/__init__.py +0 -0
  220. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/reading/test_base_100_proportional.py +0 -0
  221. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/reading/test_base_255_non_proportional.py +0 -0
  222. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/reading/test_base_255_proportional.py +0 -0
  223. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/test_deleting.py +0 -0
  224. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/test_error_handling.py +0 -0
  225. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/rating/writing/metadata_format → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/rating/writing}/__init__.py +0 -0
  226. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/release_date → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/rating/writing/metadata_format}/__init__.py +0 -0
  227. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/writing/metadata_format/test_id3v2.py +0 -0
  228. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/writing/metadata_format/test_riff.py +0 -0
  229. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/writing/metadata_format/test_vorbis.py +0 -0
  230. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/rating/writing/test_comprehensive.py +0 -0
  231. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/title → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/release_date}/__init__.py +0 -0
  232. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/release_date/test_deleting.py +0 -0
  233. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/release_date/test_error_handling.py +0 -0
  234. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/release_date/test_reading.py +0 -0
  235. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/release_date/test_writing.py +0 -0
  236. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/track_number → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/title}/__init__.py +0 -0
  237. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/title/test_deleting.py +0 -0
  238. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/title/test_error_handling.py +0 -0
  239. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/title/test_reading.py +0 -0
  240. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/title/test_writing.py +0 -0
  241. {audiometa_python-0.8.0/audiometa/test/tests/integration/metadata_field/track_number/reading → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/track_number}/__init__.py +0 -0
  242. {audiometa_python-0.8.0/audiometa/test/tests/integration/real_audio_files → audiometa_python-0.9.0/audiometa/test/tests/integration/metadata_field/track_number/reading}/__init__.py +0 -0
  243. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/track_number/reading/test_edge_cases.py +0 -0
  244. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/track_number/reading/test_metadata_format.py +0 -0
  245. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/track_number/test_deleting.py +0 -0
  246. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/metadata_field/track_number/test_writing.py +0 -0
  247. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/__init__.py +0 -0
  248. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/__init__.py +0 -0
  249. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/__init__.py +0 -0
  250. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/test_id3v1.py +0 -0
  251. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/test_id3v2_3.py +0 -0
  252. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/test_id3v2_4.py +0 -0
  253. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/test_riff.py +0 -0
  254. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/metadata_format/test_vorbis.py +0 -0
  255. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/test_performance_large_data.py +0 -0
  256. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/test_smart_parsing_scenarios.py +0 -0
  257. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/reading/test_unicode_handling.py +0 -0
  258. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/__init__.py +0 -0
  259. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/__init__.py +0 -0
  260. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/test_id3v1.py +0 -0
  261. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/test_id3v2_3.py +0 -0
  262. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/test_id3v2_4.py +0 -0
  263. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/test_riff.py +0 -0
  264. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/metadata_format/test_vorbis.py +0 -0
  265. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/test_error_handling.py +0 -0
  266. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/multiple_values/writing/test_large_values.py +0 -0
  267. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/reading/__init__.py +0 -0
  268. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/reading/test_read_multiple_metadata.py +0 -0
  269. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/reading/test_reading_error_handling.py +0 -0
  270. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info → audiometa_python-0.9.0/audiometa/test/tests/integration/real_audio_files}/__init__.py +0 -0
  271. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/real_audio_files/test_reading.py +0 -0
  272. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/real_audio_files/test_writing.py +0 -0
  273. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info/flac_md5 → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info}/__init__.py +0 -0
  274. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info/flac_md5}/__init__.py +0 -0
  275. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/conftest.py +0 -0
  276. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking}/__init__.py +0 -0
  277. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_audio_data_corruption.py +0 -0
  278. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_file.py +0 -0
  279. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_invalid_md5.py +0 -0
  280. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations}/__init__.py +0 -0
  281. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_invalid_with_metadata_combinations.py +0 -0
  282. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_state_precedence.py +0 -0
  283. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_unset_with_metadata_combinations.py +0 -0
  284. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_validation_fails_with_id3v1.py +0 -0
  285. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_validation_with_id3v2_only.py +0 -0
  286. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_validation_works_without_id3v1.py +0 -0
  287. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_metadata_combinations/test_md5_with_metadata_combinations.py +0 -0
  288. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_checking/test_unset_md5.py +0 -0
  289. {audiometa_python-0.8.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_invalid_md5 → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair}/__init__.py +0 -0
  290. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_delete_original.py +0 -0
  291. {audiometa_python-0.8.0/audiometa/test/tests/integration/writing → audiometa_python-0.9.0/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_invalid_md5}/__init__.py +0 -0
  292. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_invalid_md5/test_flipped_md5.py +0 -0
  293. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_invalid_md5/test_partial_md5.py +0 -0
  294. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_invalid_md5/test_random_md5.py +0 -0
  295. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_md5_repair_with_metadata.py +0 -0
  296. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_non_flac_error.py +0 -0
  297. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/flac_md5/md5_repair/test_unset_md5.py +0 -0
  298. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/test_bitrate.py +0 -0
  299. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/test_channels.py +0 -0
  300. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/test_duration_in_sec.py +0 -0
  301. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/technical_info/test_sample_rate.py +0 -0
  302. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/test_audio_file.py +0 -0
  303. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/test_audio_format_readable_after_update_all_metadata_formats.py +0 -0
  304. {audiometa_python-0.8.0/audiometa/test/tests/integration/writing/writing_strategies → audiometa_python-0.9.0/audiometa/test/tests/integration/writing}/__init__.py +0 -0
  305. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/test_error_handling.py +0 -0
  306. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/test_forced_format.py +0 -0
  307. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/test_multiple_format_preservation.py +0 -0
  308. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/test_partial_update.py +0 -0
  309. {audiometa_python-0.8.0/audiometa/test/tests/integration/writing/writing_strategies/unsupported_fields → audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies}/__init__.py +0 -0
  310. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/writing_strategies/test_cleanup_strategy.py +0 -0
  311. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/writing_strategies/test_preserve_strategy.py +0 -0
  312. {audiometa_python-0.8.0/audiometa/test/tests/unit → audiometa_python-0.9.0/audiometa/test/tests/integration/writing/writing_strategies/unsupported_fields}/__init__.py +0 -0
  313. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/writing_strategies/unsupported_fields/test_fail_behavior.py +0 -0
  314. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/writing_strategies/unsupported_fields/test_no_writing_on_failure.py +0 -0
  315. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/integration/writing/writing_strategies/unsupported_fields/test_strategy_specific.py +0 -0
  316. {audiometa_python-0.8.0/audiometa/test/tests/unit/audio_file → audiometa_python-0.9.0/audiometa/test/tests/unit}/__init__.py +0 -0
  317. {audiometa_python-0.8.0/audiometa/test/tests/unit/audio_file/technical_info → audiometa_python-0.9.0/audiometa/test/tests/unit/audio_file}/__init__.py +0 -0
  318. {audiometa_python-0.8.0/audiometa/test/tests/unit/cli → audiometa_python-0.9.0/audiometa/test/tests/unit/audio_file/technical_info}/__init__.py +0 -0
  319. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_bitrate.py +0 -0
  320. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_channels.py +0 -0
  321. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_duration_in_sec.py +0 -0
  322. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_error_handling.py +0 -0
  323. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_file_size.py +0 -0
  324. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_format_name.py +0 -0
  325. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/technical_info/test_sample_rate.py +0 -0
  326. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/test_context_manager.py +0 -0
  327. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/test_file_validation.py +0 -0
  328. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/test_is_audio_file.py +0 -0
  329. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/test_operations.py +0 -0
  330. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/audio_file/test_path_handling.py +0 -0
  331. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers → audiometa_python-0.9.0/audiometa/test/tests/unit/cli}/__init__.py +0 -0
  332. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/cli/test_expand_file_patterns.py +0 -0
  333. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/header_info → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers}/__init__.py +0 -0
  334. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/conftest.py +0 -0
  335. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/header_info}/__init__.py +0 -0
  336. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/header_info/test_id3v1.py +0 -0
  337. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/header_info/test_id3v2.py +0 -0
  338. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/header_info/test_riff.py +0 -0
  339. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/header_info/test_vorbis.py +0 -0
  340. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field}/__init__.py +0 -0
  341. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/reading → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values}/__init__.py +0 -0
  342. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/writing → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/reading}/__init__.py +0 -0
  343. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/reading/test_smart_parsing.py +0 -0
  344. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/writing}/__init__.py +0 -0
  345. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/writing/test_separator_selection.py +0 -0
  346. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/multiple_values/writing/test_value_filtering.py +0 -0
  347. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/reading → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating}/__init__.py +0 -0
  348. {audiometa_python-0.8.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/writing → audiometa_python-0.9.0/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/reading}/__init__.py +0 -0
  349. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/reading/test_normalization.py +0 -0
  350. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/reading/test_profiles_values.py +0 -0
  351. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/test_rating_validation.py +0 -0
  352. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/writing/test_configuration_error.py +0 -0
  353. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/writing/test_validation.py +0 -0
  354. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/rating/writing/test_writing_profiles.py +0 -0
  355. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_date_format_validation.py +0 -0
  356. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_disc_number_validation.py +0 -0
  357. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_isrc_format_validation.py +0 -0
  358. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_isrc_type_validation.py +0 -0
  359. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_track_number_validation.py +0 -0
  360. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_type_validation_exception.py +0 -0
  361. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/metadata_field/test_validation.py +0 -0
  362. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/test_metadata_format_managers_write_and_read.py +0 -0
  363. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/test/tests/unit/metadata_managers/test_riff_configuration_error.py +0 -0
  364. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/__init__.py +0 -0
  365. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/flac_md5_state.py +0 -0
  366. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/id3v1_genre_code_map.py +0 -0
  367. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/metadata_format.py +0 -0
  368. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/metadata_writing_strategy.py +0 -0
  369. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/mutagen_exception_handler.py +0 -0
  370. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/__init__.py +0 -0
  371. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/base.py +0 -0
  372. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/config.py +0 -0
  373. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/macos.py +0 -0
  374. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/ubuntu.py +0 -0
  375. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/os_dependencies_checker/windows.py +0 -0
  376. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/rating_profiles.py +0 -0
  377. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/tool_path_resolver.py +0 -0
  378. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa/utils/types.py +0 -0
  379. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa_python.egg-info/dependency_links.txt +0 -0
  380. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa_python.egg-info/entry_points.txt +0 -0
  381. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa_python.egg-info/requires.txt +0 -0
  382. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/audiometa_python.egg-info/top_level.txt +0 -0
  383. {audiometa_python-0.8.0 → audiometa_python-0.9.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: audiometa-python
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: A comprehensive Python library for reading and writing audio metadata across multiple formats
5
5
  Author: AudioMeta Python Contributors
6
6
  Author-email: Andreas Garcia <garcia.andreas.1991@gmail.com>
@@ -41,29 +41,29 @@ Requires-Dist: PyYAML==6.0; extra == "yaml"
41
41
  Dynamic: license-file
42
42
 
43
43
  <div align="center">
44
- <img src="https://raw.githubusercontent.com/Andreas-Garcia/audiometa/main/assets/logo.png" alt="AudioMeta Logo" width="200"/>
44
+ <img src="https://raw.githubusercontent.com/BehindTheMusicTree/audiometa/main/assets/logo.png" alt="AudioMeta Logo" width="200"/>
45
45
  </div>
46
46
 
47
47
  # AudioMeta Python
48
48
 
49
- [![CI](https://github.com/Andreas-Garcia/audiometa/actions/workflows/ci.yml/badge.svg)](https://github.com/Andreas-Garcia/audiometa/actions/workflows/ci.yml)
49
+ [![CI](https://github.com/BehindTheMusicTree/audiometa/actions/workflows/ci.yml/badge.svg)](https://github.com/BehindTheMusicTree/audiometa/actions/workflows/ci.yml)
50
50
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue)](https://www.python.org/)
51
51
  [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)
52
52
  [![PyPI version](https://img.shields.io/pypi/v/audiometa-python)](https://pypi.org/project/audiometa-python/)
53
53
  [![Downloads](https://img.shields.io/pepy/dt/audiometa-python)](https://pepy.tech/project/audiometa-python)
54
- [![GitHub stars](https://img.shields.io/github/stars/Andreas-Garcia/audiometa?style=social)](https://github.com/Andreas-Garcia/audiometa/stargazers)
54
+ [![GitHub stars](https://img.shields.io/github/stars/BehindTheMusicTree/audiometa?style=social)](https://github.com/BehindTheMusicTree/audiometa/stargazers)
55
55
 
56
56
  A powerful, unified Python library for reading and writing audio metadata across multiple formats. AudioMeta supports MP3, FLAC, and WAV audio files, working seamlessly with ID3v1, ID3v2, Vorbis, and RIFF metadata formats through a single, consistent API.
57
57
 
58
- **Author**: [Andreas Garcia](https://github.com/Andreas-Garcia)
58
+ **Author**: [Andreas Garcia](https://github.com/BehindTheMusicTree)
59
59
 
60
60
  ## ⭐ Show Your Support
61
61
 
62
62
  If you find AudioMeta Python useful, please consider:
63
63
 
64
64
  - ⭐ **Starring this repository** - It helps others discover the project
65
- - 🐛 **Reporting bugs** - Help improve the library by [opening an issue](https://github.com/Andreas-Garcia/audiometa/issues)
66
- - 💡 **Suggesting features** - Share your ideas via [GitHub Discussions](https://github.com/Andreas-Garcia/audiometa/discussions) or [feature requests](https://github.com/Andreas-Garcia/audiometa/issues)
65
+ - 🐛 **Reporting bugs** - Help improve the library by [opening an issue](https://github.com/BehindTheMusicTree/audiometa/issues)
66
+ - 💡 **Suggesting features** - Share your ideas via [GitHub Discussions](https://github.com/BehindTheMusicTree/audiometa/discussions) or [feature requests](https://github.com/BehindTheMusicTree/audiometa/issues)
67
67
  - 🤝 **Contributing** - See [CONTRIBUTING.md](CONTRIBUTING.md) for ways to help
68
68
  - 📢 **Sharing** - Tell others about AudioMeta Python
69
69
 
@@ -111,7 +111,7 @@ Your support helps make this project better for everyone! 🎵
111
111
  - [📝 Changelog](#-changelog)
112
112
  - [🤝 Contributing](#-contributing)
113
113
  - [Code of Conduct](CODE_OF_CONDUCT.md)
114
- - [Security Policy](https://github.com/Andreas-Garcia/audiometa/security/policy)
114
+ - [Security Policy](https://github.com/BehindTheMusicTree/audiometa/security/policy)
115
115
  - [License](#license)
116
116
 
117
117
  ## ✨ Features
@@ -1561,11 +1561,11 @@ Whether you're fixing bugs, adding features, improving documentation, or sharing
1561
1561
 
1562
1562
  **Ways to contribute:**
1563
1563
 
1564
- - 🐛 **Report bugs** - Use the [bug report template](https://github.com/Andreas-Garcia/audiometa/issues/new?template=bug_report.yml)
1565
- - 💡 **Suggest features** - Use the [feature request template](https://github.com/Andreas-Garcia/audiometa/issues/new?template=feature_request.yml)
1564
+ - 🐛 **Report bugs** - Use the [bug report template](https://github.com/BehindTheMusicTree/audiometa/issues/new?template=bug_report.yml)
1565
+ - 💡 **Suggest features** - Use the [feature request template](https://github.com/BehindTheMusicTree/audiometa/issues/new?template=feature_request.yml)
1566
1566
  - 🔧 **Submit pull requests** - See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines
1567
1567
  - 📝 **Improve documentation** - Fix typos, clarify explanations, add examples
1568
- - 💬 **Join discussions** - Share ideas and help others in [GitHub Discussions](https://github.com/Andreas-Garcia/audiometa/discussions)
1568
+ - 💬 **Join discussions** - Share ideas and help others in [GitHub Discussions](https://github.com/BehindTheMusicTree/audiometa/discussions)
1569
1569
  - ⭐ **Star the repo** - Help others discover the project
1570
1570
 
1571
1571
  For detailed contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
@@ -1,27 +1,27 @@
1
1
  <div align="center">
2
- <img src="https://raw.githubusercontent.com/Andreas-Garcia/audiometa/main/assets/logo.png" alt="AudioMeta Logo" width="200"/>
2
+ <img src="https://raw.githubusercontent.com/BehindTheMusicTree/audiometa/main/assets/logo.png" alt="AudioMeta Logo" width="200"/>
3
3
  </div>
4
4
 
5
5
  # AudioMeta Python
6
6
 
7
- [![CI](https://github.com/Andreas-Garcia/audiometa/actions/workflows/ci.yml/badge.svg)](https://github.com/Andreas-Garcia/audiometa/actions/workflows/ci.yml)
7
+ [![CI](https://github.com/BehindTheMusicTree/audiometa/actions/workflows/ci.yml/badge.svg)](https://github.com/BehindTheMusicTree/audiometa/actions/workflows/ci.yml)
8
8
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13%20%7C%203.14-blue)](https://www.python.org/)
9
9
  [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)
10
10
  [![PyPI version](https://img.shields.io/pypi/v/audiometa-python)](https://pypi.org/project/audiometa-python/)
11
11
  [![Downloads](https://img.shields.io/pepy/dt/audiometa-python)](https://pepy.tech/project/audiometa-python)
12
- [![GitHub stars](https://img.shields.io/github/stars/Andreas-Garcia/audiometa?style=social)](https://github.com/Andreas-Garcia/audiometa/stargazers)
12
+ [![GitHub stars](https://img.shields.io/github/stars/BehindTheMusicTree/audiometa?style=social)](https://github.com/BehindTheMusicTree/audiometa/stargazers)
13
13
 
14
14
  A powerful, unified Python library for reading and writing audio metadata across multiple formats. AudioMeta supports MP3, FLAC, and WAV audio files, working seamlessly with ID3v1, ID3v2, Vorbis, and RIFF metadata formats through a single, consistent API.
15
15
 
16
- **Author**: [Andreas Garcia](https://github.com/Andreas-Garcia)
16
+ **Author**: [Andreas Garcia](https://github.com/BehindTheMusicTree)
17
17
 
18
18
  ## ⭐ Show Your Support
19
19
 
20
20
  If you find AudioMeta Python useful, please consider:
21
21
 
22
22
  - ⭐ **Starring this repository** - It helps others discover the project
23
- - 🐛 **Reporting bugs** - Help improve the library by [opening an issue](https://github.com/Andreas-Garcia/audiometa/issues)
24
- - 💡 **Suggesting features** - Share your ideas via [GitHub Discussions](https://github.com/Andreas-Garcia/audiometa/discussions) or [feature requests](https://github.com/Andreas-Garcia/audiometa/issues)
23
+ - 🐛 **Reporting bugs** - Help improve the library by [opening an issue](https://github.com/BehindTheMusicTree/audiometa/issues)
24
+ - 💡 **Suggesting features** - Share your ideas via [GitHub Discussions](https://github.com/BehindTheMusicTree/audiometa/discussions) or [feature requests](https://github.com/BehindTheMusicTree/audiometa/issues)
25
25
  - 🤝 **Contributing** - See [CONTRIBUTING.md](CONTRIBUTING.md) for ways to help
26
26
  - 📢 **Sharing** - Tell others about AudioMeta Python
27
27
 
@@ -69,7 +69,7 @@ Your support helps make this project better for everyone! 🎵
69
69
  - [📝 Changelog](#-changelog)
70
70
  - [🤝 Contributing](#-contributing)
71
71
  - [Code of Conduct](CODE_OF_CONDUCT.md)
72
- - [Security Policy](https://github.com/Andreas-Garcia/audiometa/security/policy)
72
+ - [Security Policy](https://github.com/BehindTheMusicTree/audiometa/security/policy)
73
73
  - [License](#license)
74
74
 
75
75
  ## ✨ Features
@@ -1519,11 +1519,11 @@ Whether you're fixing bugs, adding features, improving documentation, or sharing
1519
1519
 
1520
1520
  **Ways to contribute:**
1521
1521
 
1522
- - 🐛 **Report bugs** - Use the [bug report template](https://github.com/Andreas-Garcia/audiometa/issues/new?template=bug_report.yml)
1523
- - 💡 **Suggest features** - Use the [feature request template](https://github.com/Andreas-Garcia/audiometa/issues/new?template=feature_request.yml)
1522
+ - 🐛 **Report bugs** - Use the [bug report template](https://github.com/BehindTheMusicTree/audiometa/issues/new?template=bug_report.yml)
1523
+ - 💡 **Suggest features** - Use the [feature request template](https://github.com/BehindTheMusicTree/audiometa/issues/new?template=feature_request.yml)
1524
1524
  - 🔧 **Submit pull requests** - See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines
1525
1525
  - 📝 **Improve documentation** - Fix typos, clarify explanations, add examples
1526
- - 💬 **Join discussions** - Share ideas and help others in [GitHub Discussions](https://github.com/Andreas-Garcia/audiometa/discussions)
1526
+ - 💬 **Join discussions** - Share ideas and help others in [GitHub Discussions](https://github.com/BehindTheMusicTree/audiometa/discussions)
1527
1527
  - ⭐ **Star the repo** - Help others discover the project
1528
1528
 
1529
1529
  For detailed contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
@@ -226,10 +226,11 @@ def get_unified_metadata_field(
226
226
  The metadata value or None if not found
227
227
 
228
228
  Raises:
229
+ MetadataFieldNotSupportedByLibError: When the key is not a valid UnifiedMetadataKey
230
+ (neither an enum instance nor a string matching an enum value)
229
231
  MetadataFieldNotSupportedByMetadataFormatError: When metadata_format is specified and the field
230
- is not supported by that format
231
- MetadataFieldNotSupportedByLibError: When the field is not supported by any format in the library
232
- (only when metadata_format is None and all formats raise MetadataFieldNotSupportedByMetadataFormatError)
232
+ is not supported by that format, or when metadata_format is None and the field is not supported
233
+ by any of the file's available metadata formats
233
234
 
234
235
  Examples:
235
236
  # Get title from any format (priority order)
@@ -296,10 +297,11 @@ def get_unified_metadata_field(
296
297
  continue
297
298
 
298
299
  # If ALL managers raised MetadataFieldNotSupportedByMetadataFormatError,
299
- # the field is not supported by the library at all
300
+ # the field is not supported by any of the file's formats
300
301
  if len(format_errors) == len(managers_prioritized) and len(format_errors) > 0:
301
- msg = f"{unified_metadata_key} metadata field is not supported by any format in the library"
302
- raise MetadataFieldNotSupportedByLibError(msg)
302
+ # Re-raise the first format-specific error to indicate the field is not supported
303
+ # by any format available for this file
304
+ raise format_errors[0][1]
303
305
 
304
306
  return None
305
307
 
@@ -830,6 +832,28 @@ def _handle_metadata_strategy(
830
832
  # Then sync all other available formats
831
833
  # Note: We need to be careful about the order to avoid conflicts
832
834
  for fmt_name, manager in other_managers.items():
835
+ # Check if this format has existing metadata (for SYNC strategy)
836
+ has_existing = False
837
+ if fmt_name == "id3v1":
838
+ has_existing = audio_file._has_id3v1_tags()
839
+ elif fmt_name == "id3v2":
840
+ # Check if file starts with ID3
841
+ try:
842
+ from pathlib import Path
843
+
844
+ with Path(audio_file.file_path).open("rb") as f:
845
+ header = f.read(3)
846
+ has_existing = header == b"ID3"
847
+ except Exception:
848
+ has_existing = False
849
+ elif fmt_name == "vorbis":
850
+ has_existing = audio_file.file_extension == ".flac" # Vorbis is native for FLAC
851
+ elif fmt_name == "riff":
852
+ has_existing = audio_file.file_extension == ".wav" # RIFF is native for WAV
853
+
854
+ if not has_existing:
855
+ continue
856
+
833
857
  # For non-target formats, filter out unsupported fields and warn about them
834
858
  # This allows syncing supported fields even when some fields are not supported
835
859
  unsupported_fields = []
@@ -186,6 +186,8 @@ def _write_metadata(args: argparse.Namespace) -> None:
186
186
  metadata[UnifiedMetadataKey.UNSYNCHRONIZED_LYRICS] = args.lyrics
187
187
  if args.comment and args.comment.strip():
188
188
  metadata[UnifiedMetadataKey.COMMENT] = args.comment
189
+ if args.description and args.description.strip():
190
+ metadata[UnifiedMetadataKey.DESCRIPTION] = args.description
189
191
  if args.replaygain and args.replaygain.strip():
190
192
  metadata[UnifiedMetadataKey.REPLAYGAIN] = args.replaygain
191
193
  if args.archival_location and args.archival_location.strip():
@@ -429,6 +431,7 @@ Examples:
429
431
  write_parser.add_argument("--copyright", help="Copyright information")
430
432
  write_parser.add_argument("--lyrics", help="Unsynchronized lyrics text")
431
433
  write_parser.add_argument("--comment", help="Comment")
434
+ write_parser.add_argument("--description", help="Description")
432
435
  write_parser.add_argument("--replaygain", help="ReplayGain information")
433
436
  write_parser.add_argument("--archival-location", help="Archival location")
434
437
  write_parser.add_argument("--isrc", help="International Standard Recording Code (12 characters)")