pyrekordbox 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl

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 (71) hide show
  1. docs/source/formats/anlz.md +178 -7
  2. docs/source/formats/db6.md +1 -1
  3. docs/source/index.md +2 -6
  4. docs/source/quickstart.md +68 -45
  5. docs/source/tutorial/index.md +1 -1
  6. pyrekordbox/__init__.py +1 -1
  7. pyrekordbox/_version.py +2 -2
  8. pyrekordbox/anlz/file.py +39 -0
  9. pyrekordbox/anlz/structs.py +3 -5
  10. pyrekordbox/config.py +71 -27
  11. pyrekordbox/db6/database.py +260 -33
  12. pyrekordbox/db6/registry.py +22 -0
  13. pyrekordbox/db6/tables.py +3 -4
  14. {pyrekordbox-0.2.1.dist-info → pyrekordbox-0.2.2.dist-info}/METADATA +12 -11
  15. pyrekordbox-0.2.2.dist-info/RECORD +80 -0
  16. {pyrekordbox-0.2.1.dist-info → pyrekordbox-0.2.2.dist-info}/top_level.txt +0 -2
  17. tests/test_config.py +175 -0
  18. tests/test_db6.py +78 -0
  19. build/lib/build/lib/docs/source/conf.py +0 -178
  20. build/lib/build/lib/pyrekordbox/__init__.py +0 -22
  21. build/lib/build/lib/pyrekordbox/__main__.py +0 -204
  22. build/lib/build/lib/pyrekordbox/_version.py +0 -16
  23. build/lib/build/lib/pyrekordbox/anlz/__init__.py +0 -127
  24. build/lib/build/lib/pyrekordbox/anlz/file.py +0 -186
  25. build/lib/build/lib/pyrekordbox/anlz/structs.py +0 -299
  26. build/lib/build/lib/pyrekordbox/anlz/tags.py +0 -508
  27. build/lib/build/lib/pyrekordbox/config.py +0 -596
  28. build/lib/build/lib/pyrekordbox/db6/__init__.py +0 -45
  29. build/lib/build/lib/pyrekordbox/db6/aux_files.py +0 -213
  30. build/lib/build/lib/pyrekordbox/db6/database.py +0 -1808
  31. build/lib/build/lib/pyrekordbox/db6/registry.py +0 -304
  32. build/lib/build/lib/pyrekordbox/db6/tables.py +0 -1618
  33. build/lib/build/lib/pyrekordbox/logger.py +0 -23
  34. build/lib/build/lib/pyrekordbox/mysettings/__init__.py +0 -32
  35. build/lib/build/lib/pyrekordbox/mysettings/file.py +0 -369
  36. build/lib/build/lib/pyrekordbox/mysettings/structs.py +0 -282
  37. build/lib/build/lib/pyrekordbox/utils.py +0 -162
  38. build/lib/build/lib/pyrekordbox/xml.py +0 -1294
  39. build/lib/build/lib/tests/__init__.py +0 -3
  40. build/lib/build/lib/tests/test_anlz.py +0 -206
  41. build/lib/build/lib/tests/test_db6.py +0 -1039
  42. build/lib/build/lib/tests/test_mysetting.py +0 -203
  43. build/lib/build/lib/tests/test_xml.py +0 -629
  44. build/lib/docs/source/conf.py +0 -178
  45. build/lib/pyrekordbox/__init__.py +0 -22
  46. build/lib/pyrekordbox/__main__.py +0 -204
  47. build/lib/pyrekordbox/_version.py +0 -16
  48. build/lib/pyrekordbox/anlz/__init__.py +0 -127
  49. build/lib/pyrekordbox/anlz/file.py +0 -186
  50. build/lib/pyrekordbox/anlz/structs.py +0 -299
  51. build/lib/pyrekordbox/anlz/tags.py +0 -508
  52. build/lib/pyrekordbox/config.py +0 -596
  53. build/lib/pyrekordbox/db6/__init__.py +0 -45
  54. build/lib/pyrekordbox/db6/aux_files.py +0 -213
  55. build/lib/pyrekordbox/db6/database.py +0 -1808
  56. build/lib/pyrekordbox/db6/registry.py +0 -304
  57. build/lib/pyrekordbox/db6/tables.py +0 -1618
  58. build/lib/pyrekordbox/logger.py +0 -23
  59. build/lib/pyrekordbox/mysettings/__init__.py +0 -32
  60. build/lib/pyrekordbox/mysettings/file.py +0 -369
  61. build/lib/pyrekordbox/mysettings/structs.py +0 -282
  62. build/lib/pyrekordbox/utils.py +0 -162
  63. build/lib/pyrekordbox/xml.py +0 -1294
  64. build/lib/tests/__init__.py +0 -3
  65. build/lib/tests/test_anlz.py +0 -206
  66. build/lib/tests/test_db6.py +0 -1039
  67. build/lib/tests/test_mysetting.py +0 -203
  68. build/lib/tests/test_xml.py +0 -629
  69. pyrekordbox-0.2.1.dist-info/RECORD +0 -129
  70. {pyrekordbox-0.2.1.dist-info → pyrekordbox-0.2.2.dist-info}/LICENSE +0 -0
  71. {pyrekordbox-0.2.1.dist-info → pyrekordbox-0.2.2.dist-info}/WHEEL +0 -0
@@ -1,203 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Author: Dylan Jones
3
- # Date: 2022-10-25
4
-
5
- import os
6
- import pytest
7
- from pyrekordbox.mysettings import (
8
- read_mysetting_file,
9
- MySettingFile,
10
- MySetting2File,
11
- DjmMySettingFile,
12
- )
13
- from pyrekordbox.mysettings.file import compute_checksum
14
-
15
- TEST_ROOT = os.path.join(os.path.dirname(os.path.dirname(__file__)), ".testdata")
16
-
17
- MYSETTING_KEYS = [
18
- "on_air_display",
19
- "lcd_brightness",
20
- "quantize",
21
- "auto_cue_level",
22
- "language",
23
- "jog_ring_brightness",
24
- "jog_ring_indicator",
25
- "slip_flashing",
26
- "eject_lock",
27
- "disc_slot_illumination",
28
- "sync",
29
- "play_mode",
30
- "quantize_beat_value",
31
- "hotcue_autoload",
32
- "hotcue_color",
33
- "needle_lock",
34
- "time_mode",
35
- "jog_mode",
36
- "auto_cue",
37
- "master_tempo",
38
- "tempo_range",
39
- "phase_meter",
40
- ]
41
-
42
- MYSETTING2_KEYS = [
43
- "vinyl_speed_adjust",
44
- "jog_display_mode",
45
- "pad_button_brightness",
46
- "jog_lcd_brightness",
47
- "waveform_divisions",
48
- "waveform",
49
- "beat_jump_beat_value",
50
- ]
51
-
52
- DJMMYSETTING_KEYS = [
53
- "channel_fader_curve",
54
- "cross_fader_curve",
55
- "headphones_pre_eq",
56
- "headphones_mono_split",
57
- "beat_fx_quantize",
58
- "mic_low_cut",
59
- "talk_over_mode",
60
- "talk_over_level",
61
- "midi_channel",
62
- "midi_button_type",
63
- "display_brightness",
64
- "indicator_brightness",
65
- "channel_fader_curve_long",
66
- ]
67
-
68
-
69
- def _read_setting_file(type_, key, value):
70
- file = type_.upper() + ".DAT"
71
- root = os.path.join(TEST_ROOT, "mysettings", type_)
72
- path = os.path.join(root, key, value, file)
73
- if not os.path.exists(path):
74
- raise FileNotFoundError(path)
75
- return read_mysetting_file(path)
76
-
77
-
78
- def _read_default_setting_file(type_):
79
- file = type_.upper() + ".DAT"
80
- root = os.path.join(TEST_ROOT, "mysettings")
81
- path = os.path.join(root, file)
82
- if not os.path.exists(path):
83
- raise FileNotFoundError(path)
84
- return read_mysetting_file(path)
85
-
86
-
87
- def _get_values(type_, key):
88
- root = os.path.join(TEST_ROOT, "mysettings", type_, key)
89
- return os.listdir(root)
90
-
91
-
92
- # -- MySetting -------------------------------------------------------------------------
93
-
94
-
95
- @pytest.mark.parametrize("key", MYSETTING_KEYS)
96
- def test_get_mysetting(key):
97
- for expected in _get_values("mysetting", key):
98
- file = _read_setting_file("mysetting", key, expected)
99
- assert file[key] == expected
100
-
101
-
102
- def test_mysetting_defaults():
103
- file_default = _read_default_setting_file("mysetting")
104
- file = MySettingFile()
105
- for key in MYSETTING_KEYS:
106
- assert file[key] == file_default[key]
107
-
108
-
109
- @pytest.mark.parametrize("key", MYSETTING_KEYS)
110
- def test_set_mysetting(key):
111
- type_ = "mysetting"
112
- for val in _get_values(type_, key):
113
- # Read value file
114
- file_ref = _read_setting_file(type_, key, val)
115
- # Read default file and update value
116
- file = _read_default_setting_file(type_)
117
- file[key] = val
118
- # Check values are identical
119
- assert file[key] == file_ref[key]
120
- # Check binary data is identical
121
- assert file.build() == file_ref.build()
122
-
123
-
124
- # -- MySetting2 ------------------------------------------------------------------------
125
-
126
-
127
- @pytest.mark.parametrize("key", MYSETTING2_KEYS)
128
- def test_get_mysetting2(key):
129
- for expected in _get_values("mysetting2", key):
130
- file = _read_setting_file("mysetting2", key, expected)
131
- assert file[key] == expected
132
-
133
-
134
- def test_mysetting2_defaults():
135
- file_default = _read_default_setting_file("mysetting2")
136
- file = MySetting2File()
137
- for key in MYSETTING2_KEYS:
138
- assert file[key] == file_default[key]
139
-
140
-
141
- @pytest.mark.parametrize("key", MYSETTING2_KEYS)
142
- def test_set_mysetting2(key):
143
- type_ = "mysetting2"
144
- for val in _get_values(type_, key):
145
- # Read value file
146
- file_ref = _read_setting_file(type_, key, val)
147
- # Read default file and update value
148
- file = _read_default_setting_file(type_)
149
- file[key] = val
150
- # Check values are identical
151
- assert file[key] == file_ref[key]
152
- # Check binary data is identical
153
- assert file.build() == file_ref.build()
154
-
155
-
156
- # -- DjmMySetting ----------------------------------------------------------------------
157
-
158
-
159
- @pytest.mark.parametrize("key", DJMMYSETTING_KEYS)
160
- def test_get_djmmysetting(key):
161
- for expected in _get_values("djmmysetting", key):
162
- file = _read_setting_file("djmmysetting", key, expected)
163
- assert file[key] == expected
164
-
165
-
166
- def test_djmmysetting_defaults():
167
- file_default = _read_default_setting_file("djmmysetting")
168
- file = DjmMySettingFile()
169
- for key in DJMMYSETTING_KEYS:
170
- assert file[key] == file_default[key]
171
-
172
-
173
- @pytest.mark.parametrize("key", DJMMYSETTING_KEYS)
174
- def test_set_djmmysetting(key):
175
- type_ = "djmmysetting"
176
- for val in _get_values(type_, key):
177
- # Read value file
178
- file_ref = _read_setting_file(type_, key, val)
179
- # Read default file and update value
180
- file = _read_default_setting_file(type_)
181
- file[key] = val
182
- # Check values are identical
183
- assert file[key] == file_ref[key]
184
- # Check binary data is identical
185
- assert file.build() == file_ref.build()
186
-
187
-
188
- # ======================================================================================
189
-
190
-
191
- def test_mysetting_checksum():
192
- file_types = "MYSETTING.DAT", "MYSETTING2.DAT", "DJMMYSETTING.DAT"
193
-
194
- root = os.path.join(TEST_ROOT, "mysettings")
195
- for root, _, files in os.walk(root):
196
- for name in files:
197
- if name not in file_types:
198
- continue
199
- path = os.path.join(root, name)
200
- sett = read_mysetting_file(path)
201
- data = sett.build()
202
- checksum = compute_checksum(data, sett.struct)
203
- assert checksum == sett.parsed.checksum