nnnotes 0.1.2__tar.gz → 0.1.4__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 (156) hide show
  1. nnnotes-0.1.4/CHANGELOG.md +161 -0
  2. {nnnotes-0.1.2 → nnnotes-0.1.4}/PKG-INFO +37 -21
  3. nnnotes-0.1.2/src/nnnotes.egg-info/PKG-INFO → nnnotes-0.1.4/README.en.md +17 -32
  4. {nnnotes-0.1.2 → nnnotes-0.1.4}/pyproject.toml +11 -10
  5. nnnotes-0.1.4/rust/Cargo.lock +285 -0
  6. nnnotes-0.1.4/rust/Cargo.toml +24 -0
  7. nnnotes-0.1.4/rust/build.rs +33 -0
  8. nnnotes-0.1.4/rust/rustfmt.toml +2 -0
  9. nnnotes-0.1.4/rust/src/lib.rs +116 -0
  10. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/__init__.py +1 -1
  11. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/addressables.py +56 -10
  12. nnnotes-0.1.4/src/nnnotes/apkset.py +103 -0
  13. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/catalog.py +70 -20
  14. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/catalogdb.py +17 -10
  15. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/cli.py +116 -23
  16. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/cli_assets.py +97 -40
  17. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/config.py +42 -0
  18. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/configfile.py +12 -3
  19. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/cri.py +2 -1
  20. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/crikey.py +4 -3
  21. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/crilips.py +2 -1
  22. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/cristages.py +8 -3
  23. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/deckdata.py +76 -75
  24. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/gameapi.py +19 -7
  25. nnnotes-0.1.4/src/nnnotes/jp.py +294 -0
  26. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/liveaudio.py +2 -2
  27. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/master.py +31 -5
  28. nnnotes-0.1.4/src/nnnotes/musicdata.py +1146 -0
  29. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/nnnotes.example.toml +15 -2
  30. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/player.py +7 -2
  31. nnnotes-0.1.4/src/nnnotes/replaydata.py +138 -0
  32. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/storysite.py +2 -0
  33. nnnotes-0.1.4/src/nnnotes/ui.py +310 -0
  34. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/web.py +23 -3
  35. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/webmodel.py +1 -1
  36. nnnotes-0.1.2/README.en.md +0 -191
  37. nnnotes-0.1.2/README.md +0 -144
  38. nnnotes-0.1.2/setup.cfg +0 -4
  39. nnnotes-0.1.2/src/nnnotes.egg-info/SOURCES.txt +0 -143
  40. nnnotes-0.1.2/src/nnnotes.egg-info/dependency_links.txt +0 -1
  41. nnnotes-0.1.2/src/nnnotes.egg-info/entry_points.txt +0 -2
  42. nnnotes-0.1.2/src/nnnotes.egg-info/requires.txt +0 -16
  43. nnnotes-0.1.2/src/nnnotes.egg-info/top_level.txt +0 -1
  44. nnnotes-0.1.2/tests/test_advvideo.py +0 -522
  45. nnnotes-0.1.2/tests/test_atom_eval.py +0 -231
  46. nnnotes-0.1.2/tests/test_atoms_mesh.py +0 -357
  47. nnnotes-0.1.2/tests/test_atoms_sprite.py +0 -235
  48. nnnotes-0.1.2/tests/test_atoms_texture.py +0 -272
  49. nnnotes-0.1.2/tests/test_blob_memo.py +0 -101
  50. nnnotes-0.1.2/tests/test_cache.py +0 -107
  51. nnnotes-0.1.2/tests/test_catalog.py +0 -206
  52. nnnotes-0.1.2/tests/test_catalog_lazy.py +0 -194
  53. nnnotes-0.1.2/tests/test_catalogdb.py +0 -320
  54. nnnotes-0.1.2/tests/test_census.py +0 -211
  55. nnnotes-0.1.2/tests/test_cli.py +0 -373
  56. nnnotes-0.1.2/tests/test_cli_assets.py +0 -1007
  57. nnnotes-0.1.2/tests/test_compress.py +0 -67
  58. nnnotes-0.1.2/tests/test_config.py +0 -193
  59. nnnotes-0.1.2/tests/test_configfile.py +0 -203
  60. nnnotes-0.1.2/tests/test_contract.py +0 -240
  61. nnnotes-0.1.2/tests/test_crilips.py +0 -199
  62. nnnotes-0.1.2/tests/test_cristages.py +0 -554
  63. nnnotes-0.1.2/tests/test_deckdata.py +0 -461
  64. nnnotes-0.1.2/tests/test_gameapi.py +0 -393
  65. nnnotes-0.1.2/tests/test_goldens.py +0 -125
  66. nnnotes-0.1.2/tests/test_jsonio.py +0 -45
  67. nnnotes-0.1.2/tests/test_layout.py +0 -363
  68. nnnotes-0.1.2/tests/test_link.py +0 -279
  69. nnnotes-0.1.2/tests/test_live_options.py +0 -298
  70. nnnotes-0.1.2/tests/test_live_options_web.py +0 -166
  71. nnnotes-0.1.2/tests/test_master.py +0 -132
  72. nnnotes-0.1.2/tests/test_mesh_texture_guards.py +0 -94
  73. nnnotes-0.1.2/tests/test_modelstages.py +0 -422
  74. nnnotes-0.1.2/tests/test_objexport.py +0 -1016
  75. nnnotes-0.1.2/tests/test_orchestrate.py +0 -305
  76. nnnotes-0.1.2/tests/test_pipeline.py +0 -163
  77. nnnotes-0.1.2/tests/test_plan.py +0 -149
  78. nnnotes-0.1.2/tests/test_player.py +0 -140
  79. nnnotes-0.1.2/tests/test_readsets.py +0 -442
  80. nnnotes-0.1.2/tests/test_regions.py +0 -246
  81. nnnotes-0.1.2/tests/test_repo.py +0 -50
  82. nnnotes-0.1.2/tests/test_room.py +0 -392
  83. nnnotes-0.1.2/tests/test_sniff.py +0 -137
  84. nnnotes-0.1.2/tests/test_speed_exact.py +0 -534
  85. nnnotes-0.1.2/tests/test_spot.py +0 -159
  86. nnnotes-0.1.2/tests/test_stages.py +0 -274
  87. nnnotes-0.1.2/tests/test_store.py +0 -181
  88. nnnotes-0.1.2/tests/test_story_closure.py +0 -137
  89. nnnotes-0.1.2/tests/test_story_fonts.py +0 -842
  90. nnnotes-0.1.2/tests/test_story_host.py +0 -512
  91. nnnotes-0.1.2/tests/test_story_kinds.py +0 -100
  92. nnnotes-0.1.2/tests/test_story_site.py +0 -663
  93. nnnotes-0.1.2/tests/test_story_ui.py +0 -551
  94. nnnotes-0.1.2/tests/test_textstyle.py +0 -253
  95. nnnotes-0.1.2/tests/test_typetrees.py +0 -382
  96. nnnotes-0.1.2/tests/test_views.py +0 -749
  97. nnnotes-0.1.2/tests/test_voices.py +0 -756
  98. nnnotes-0.1.2/tests/test_voices_story.py +0 -541
  99. nnnotes-0.1.2/tests/test_web.py +0 -277
  100. nnnotes-0.1.2/tests/test_webmodel.py +0 -716
  101. {nnnotes-0.1.2 → nnnotes-0.1.4}/LICENSE +0 -0
  102. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/__main__.py +0 -0
  103. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/acb.py +0 -0
  104. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/adv.py +0 -0
  105. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/advcommand.py +0 -0
  106. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/advmedia.py +0 -0
  107. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/advscene.py +0 -0
  108. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/advui.py +0 -0
  109. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/advvideo.py +0 -0
  110. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/__init__.py +0 -0
  111. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/astc.py +0 -0
  112. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/gltf.py +0 -0
  113. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/mesh.py +0 -0
  114. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/png.py +0 -0
  115. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/reader.py +0 -0
  116. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/sniff.py +0 -0
  117. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/sprite.py +0 -0
  118. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/atoms/texture.py +0 -0
  119. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/cache.py +0 -0
  120. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/census.py +0 -0
  121. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/compress.py +0 -0
  122. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/contract.py +0 -0
  123. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/export.py +0 -0
  124. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/jsonio.py +0 -0
  125. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/languages.py +0 -0
  126. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/layout.py +0 -0
  127. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/link.py +0 -0
  128. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/live.py +0 -0
  129. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/live2d.py +0 -0
  130. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/livenotes.py +0 -0
  131. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/liveoptions.py +0 -0
  132. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/livescene.py +0 -0
  133. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/liveui.py +0 -0
  134. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/modelstages.py +0 -0
  135. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/motion.py +0 -0
  136. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/objexport.py +0 -0
  137. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/orchestrate.py +0 -0
  138. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/plan.py +0 -0
  139. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/room.py +0 -0
  140. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/score.py +0 -0
  141. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/shader.py +0 -0
  142. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/spot.py +0 -0
  143. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/stages.py +0 -0
  144. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/store.py +0 -0
  145. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/story.py +0 -0
  146. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/storyfonts.py +0 -0
  147. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/storyhost.py +0 -0
  148. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/storyvoices.py +0 -0
  149. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/textstyle.py +0 -0
  150. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/tmpfont.py +0 -0
  151. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/typetrees/6000.3.12f1.json +0 -0
  152. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/unity.py +0 -0
  153. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/viewrules.json +0 -0
  154. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/views.py +0 -0
  155. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/voices.py +0 -0
  156. {nnnotes-0.1.2 → nnnotes-0.1.4}/src/nnnotes/webaudio.py +0 -0
@@ -0,0 +1,161 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are listed here. Versions follow [Semantic Versioning](https://semver.org/).
4
+
5
+ ## [0.1.4](https://github.com/MetaSekaiLab/nnnotes/compare/v0.1.3...v0.1.4) - 2026-10-06
6
+
7
+ ### Features
8
+
9
+ - **deck-data:** Export character rank experience thresholds ([3abe101](https://github.com/MetaSekaiLab/nnnotes/commit/3abe1017e47d267f77822af949500789c1831ee4))
10
+ - **music-data:** Publish the recommendation engine in the replay manifest ([42098d7](https://github.com/MetaSekaiLab/nnnotes/commit/42098d7bfa538912bbc350beaebfe78f3b04f202))
11
+ - **catalogs:** Record the resource version of an imported catalog ([a9d0bbd](https://github.com/MetaSekaiLab/nnnotes/commit/a9d0bbd034aee00c696979eba3b1f33754b8a237))
12
+ - **music-data:** Take the deck model's WASM release packages as engines ([de34ee2](https://github.com/MetaSekaiLab/nnnotes/commit/de34ee28ec181cac16237aa2751ff38e3bccfd91))
13
+
14
+ ### Bug fixes
15
+
16
+ - **deck-data:** Export represented VIP rank identities ([c5d0514](https://github.com/MetaSekaiLab/nnnotes/commit/c5d051454f90c2afc7fb0063485f7dcf5d5a7669))
17
+ - **music-data:** Name the mismatch when an engine package is rejected ([e7fdacd](https://github.com/MetaSekaiLab/nnnotes/commit/e7fdacdd34b80fdf391614f08fd5d7480d33904e))
18
+
19
+ ### Documentation
20
+
21
+ - Add a changelog generated by git-cliff ([d601820](https://github.com/MetaSekaiLab/nnnotes/commit/d60182018911d3f1fc236d355185592b2b6ec8ad))
22
+
23
+ ### Build
24
+
25
+ - **deck:** Build the deck model from the ournotes-sim crate ([946fb33](https://github.com/MetaSekaiLab/nnnotes/commit/946fb335aef234837c461dfa960f3ce28dc946da))
26
+ - **deck:** Ournotes-deck ddf212b601731f9ab74245119d4408d2746a370c ([9f0ba0e](https://github.com/MetaSekaiLab/nnnotes/commit/9f0ba0e234cc4119682b3be4ebcd85344e618b02))
27
+ - **deck:** Ournotes-deck v0.0.2 ([8a088f4](https://github.com/MetaSekaiLab/nnnotes/commit/8a088f4b7e40a79b3bc111e88c25d0abce397f36))
28
+
29
+ ### CI
30
+
31
+ - **commitlint:** Lift the line length limit of bodies and footers ([b9eecd9](https://github.com/MetaSekaiLab/nnnotes/commit/b9eecd91c682011748a3877e311d6ddcfb88000b))
32
+ - Test on Python 3.14 ([5c845eb](https://github.com/MetaSekaiLab/nnnotes/commit/5c845eb365fcc23c36bf724f336ed747ba198057))
33
+ - **deck:** Move create-pull-request to v8, which runs on Node.js 24 ([1e1bb17](https://github.com/MetaSekaiLab/nnnotes/commit/1e1bb179f98dddecb72465949276cbc4fb4e8fd7))
34
+ - **deck:** Dispatch CI and the commit message check on the pin pull request ([3a6bdfc](https://github.com/MetaSekaiLab/nnnotes/commit/3a6bdfc95dd80171724ac313e2aeb5278859a843))
35
+
36
+ ## [0.1.3](https://github.com/MetaSekaiLab/nnnotes/compare/v0.1.2...v0.1.3) - 2026-09-30
37
+
38
+ ### Features
39
+
40
+ - **songs:** Export every song's metadata and chart facts ([3dae671](https://github.com/MetaSekaiLab/nnnotes/commit/3dae671302ca843c2ce573802e1309b4b85893a2))
41
+ - [**breaking**] One music-data command with the deck model built in ([197b436](https://github.com/MetaSekaiLab/nnnotes/commit/197b436dfccbefa5296fd40fcf5167458ab1406e))
42
+ - **music-data:** Play scenarios: Gekisou off, every rank, the Perfect play ([a03591e](https://github.com/MetaSekaiLab/nnnotes/commit/a03591e7fd4f186df7ddbe161c787c7cad138b41))
43
+ - **music-data:** Read decoded master data with its manifest (--decoded-master) ([12df2a6](https://github.com/MetaSekaiLab/nnnotes/commit/12df2a67b71ade5e41b51e6602d97d6b5733bd99))
44
+ - **jp:** Support Japanese release assets and split APKs ([9bd4452](https://github.com/MetaSekaiLab/nnnotes/commit/9bd4452b262b349cf4ae7b20b4110f532f2ba8d4))
45
+ - **music-data:** The Gekisou catalog, range luck points and the seed set check ([ffaa1bc](https://github.com/MetaSekaiLab/nnnotes/commit/ffaa1bc10eecc2269ffcffb5fa952e166dc1053f))
46
+ - **music-data:** Export and validate single-skill Gekisou aptitude ([35ae7a0](https://github.com/MetaSekaiLab/nnnotes/commit/35ae7a0727934f9f12a8a0b1b650b3a42c6f9a5f))
47
+ - Export versioned Rust replay data with chart statistics ([46b5b09](https://github.com/MetaSekaiLab/nnnotes/commit/46b5b09c7356c27874ee01c610dc295f60b48765))
48
+ - **ui:** Export offline serialized prefab libraries ([0a7344d](https://github.com/MetaSekaiLab/nnnotes/commit/0a7344d09dbeddde36237b8bf63e83bee2159885))
49
+
50
+ ### Bug fixes
51
+
52
+ - **jp:** Address review regressions ([5f40d3e](https://github.com/MetaSekaiLab/nnnotes/commit/5f40d3ee2b195b802a97bf4a861e3f64d223d1f6))
53
+ - **catalog:** Select international catalogs by resource version ([15cb3bf](https://github.com/MetaSekaiLab/nnnotes/commit/15cb3bfe079282f2624c5a0eeba757566c7eb5f6))
54
+ - **release:** Preflight wheels and preserve reviewed notes ([b1e12c4](https://github.com/MetaSekaiLab/nnnotes/commit/b1e12c4ab31cfed6cd453e562aeeb66c3821af83))
55
+
56
+ ### Build
57
+
58
+ - **deck:** Pin the final Gekisou aptitude implementation ([4881a21](https://github.com/MetaSekaiLab/nnnotes/commit/4881a2183a1d1cef9ecc799f0bf293dbc58469d7))
59
+
60
+ ### CI
61
+
62
+ - Move the GitHub Actions to their current majors ([f0038c1](https://github.com/MetaSekaiLab/nnnotes/commit/f0038c15887b2ad8b61ddde320560837dbab1b5f))
63
+ - Run commitlint on Node.js 24, the active LTS ([48b6557](https://github.com/MetaSekaiLab/nnnotes/commit/48b6557490f638f2b37b73dabb8fa175f0cce788))
64
+
65
+ ## [0.1.2](https://github.com/MetaSekaiLab/nnnotes/compare/v0.1.1...v0.1.2) - 2026-09-28
66
+
67
+ ### Bug fixes
68
+
69
+ - **unity:** Treat a MonoBehaviour with a missing script as classless ([83dd161](https://github.com/MetaSekaiLab/nnnotes/commit/83dd161e7a2af6953e97c56548341ab6839def0c))
70
+ - **room:** Write a valid glTF for a room without geometry ([8465dd5](https://github.com/MetaSekaiLab/nnnotes/commit/8465dd5d89d3a1857d4dcb80b9f5ff8a36895473))
71
+ - **story:** Share a models directory between concurrent story runs ([2051001](https://github.com/MetaSekaiLab/nnnotes/commit/2051001924ecdbb39d6bc6c5d011a9b52d43a188))
72
+
73
+ ### Documentation
74
+
75
+ - **readme:** Completion after verifying every story, spot and region ([c4d6740](https://github.com/MetaSekaiLab/nnnotes/commit/c4d67403b434a05f011a247a5c5bf48f52ebb9d1))
76
+
77
+ ## [0.1.1](https://github.com/MetaSekaiLab/nnnotes/compare/v0.1.0...v0.1.1) - 2026-09-27
78
+
79
+ ### Features
80
+
81
+ - **config:** Write, edit and check the config file ([1f9b1a2](https://github.com/MetaSekaiLab/nnnotes/commit/1f9b1a2ab9ecb1a29a328a88c8dbf351e010597e))
82
+ - **web:** [**breaking**] Store site assets compressed, gzip by default ([e90a46b](https://github.com/MetaSekaiLab/nnnotes/commit/e90a46b19f332e137b0fa49316651e2fb014a464))
83
+ - **story:** [**breaking**] Stories reference their Live2D models instead of embedding them ([510ff98](https://github.com/MetaSekaiLab/nnnotes/commit/510ff98d90d19bee91e6f87f555c5fbb4104e08b))
84
+
85
+ ### Bug fixes
86
+
87
+ - **room:** Share equal images and key objects by their file ([a8af00a](https://github.com/MetaSekaiLab/nnnotes/commit/a8af00a5f89afa11f0cdb0caf032afe38e6e1b18))
88
+
89
+ ## [0.1.0](https://github.com/MetaSekaiLab/nnnotes/releases/tag/v0.1.0) - 2026-09-27
90
+
91
+ ### Features
92
+
93
+ - Add the nnnotes data toolkit ([073c60c](https://github.com/MetaSekaiLab/nnnotes/commit/073c60cc029b067e2b5db9a8c5772f7dbdcc58d4))
94
+ - Read the APK boot data with bundled type trees ([fb1739e](https://github.com/MetaSekaiLab/nnnotes/commit/fb1739ebe5b898dcf5c6a4c02b4eb88f6f59ec28))
95
+ - Build Live2D models into the web site ([03e3831](https://github.com/MetaSekaiLab/nnnotes/commit/03e38314eebf7d6a9bb62b5905778056b73d33c3))
96
+ - Fetch the current master data version from the game's API ([bcd7f20](https://github.com/MetaSekaiLab/nnnotes/commit/bcd7f20d9bb1e3bfeb89dd72f49f5d360b8da2ae))
97
+ - Serve every region and language from one web site ([8160121](https://github.com/MetaSekaiLab/nnnotes/commit/81601210452e3b40f195e115beaae0dccf10f7cc))
98
+ - Add open and game text styles for exported text (--fonts) ([da41edf](https://github.com/MetaSekaiLab/nnnotes/commit/da41edf7fe17fff125f56d9a5d5ab2afa5e3f8f6))
99
+ - Export frames, effects, stills, chat and videos of story episodes ([2bacea1](https://github.com/MetaSekaiLab/nnnotes/commit/2bacea1e02054393b4d8bc09d7325c3fa2be06da))
100
+ - Add the asset export: export, plan, run-stage, catalogs ([d04423c](https://github.com/MetaSekaiLab/nnnotes/commit/d04423c2db72eb8d350c8271aaf2c9ea4bf64b88))
101
+ - **live:** Offer the Live options that select files ([dc4f1e7](https://github.com/MetaSekaiLab/nnnotes/commit/dc4f1e704ccdebba878f179f24aa2157d6186c88))
102
+ - **web:** Export story episodes for the story player ([197af04](https://github.com/MetaSekaiLab/nnnotes/commit/197af04954c4f5bd4dc6932140f57c0b7f937452))
103
+ - **export:** FLAC level 8 by default and explicit layout placement ([11bf5d8](https://github.com/MetaSekaiLab/nnnotes/commit/11bf5d87f6decd8b0d465661c8d41f48b227945e))
104
+ - **story:** Chat texts, emoji sprites, frame particles, lit rooms and CRI Lips data ([5eb4f6c](https://github.com/MetaSekaiLab/nnnotes/commit/5eb4f6cfa1978eab6846ff6cc99b48a997b90efc))
105
+ - **deck-data:** One JSON of charts and master tables for deck-building tools ([06e6943](https://github.com/MetaSekaiLab/nnnotes/commit/06e6943e4a2ad977d6684871906f7d90a282a227))
106
+ - **voices:** Voice index view and query command; one ACB table reader ([6bb748a](https://github.com/MetaSekaiLab/nnnotes/commit/6bb748aaa7e24942f5cee6ebb704e7c016e9a8c7))
107
+ - **cri.movie:** All USM streams (MPEG-1, H.264, alpha, subtitles, HCA) and bundle-held movies ([ff97da8](https://github.com/MetaSekaiLab/nnnotes/commit/ff97da8b2cb01721041522f69d8c42c978b5150c))
108
+ - **voices:** Story episode voices with their lines, speakers and cues ([e65d84d](https://github.com/MetaSekaiLab/nnnotes/commit/e65d84d9733e039bf046c3bfd56a5cda06eba118))
109
+ - **story:** Missing glyphs and frame texts in the story font data ([476dff0](https://github.com/MetaSekaiLab/nnnotes/commit/476dff0c02f47017f26260997fb2b8bce0d2078e))
110
+ - **story:** Open font assets follow the game's TMP fallback chains ([b5cd68e](https://github.com/MetaSekaiLab/nnnotes/commit/b5cd68ee7bbd3dc2dc58c9fb8858a20b34e7179c))
111
+
112
+ ### Bug fixes
113
+
114
+ - Correct the ADV resource closure for chat stamps and IgnoreData rows ([9f03fb9](https://github.com/MetaSekaiLab/nnnotes/commit/9f03fb97784ecdfbeb0e576c8e257c0e6123b05c))
115
+ - Stop with a usage error on unknown keys, ids and charts ([1fa6958](https://github.com/MetaSekaiLab/nnnotes/commit/1fa69589a68246ffa2cbd5a96bda8c1646be37b1))
116
+ - Read the region, CDN and bundle key only when a download needs them ([da1d47c](https://github.com/MetaSekaiLab/nnnotes/commit/da1d47c918d7895e2f83390cf69f888817d0fcb9))
117
+ - Handle more mesh, texture and reference forms in room and spot ([4ddc76c](https://github.com/MetaSekaiLab/nnnotes/commit/4ddc76ca667d5458a77928560e562060a331cf6b))
118
+ - Generate MonoBehaviour typetrees in Unity's own node layout ([d0efb2c](https://github.com/MetaSekaiLab/nnnotes/commit/d0efb2cbbe17a2749fdb7f8f6b2370d25de95917))
119
+ - Story UI language, model names, master JSON and external AWB ([29aada6](https://github.com/MetaSekaiLab/nnnotes/commit/29aada69e763dde8c2fd51fe287dfea118314766))
120
+ - **export:** Read the APK's raw files from the APK ([3d9f79c](https://github.com/MetaSekaiLab/nnnotes/commit/3d9f79c135afb232a12ed3661584f780187a9b4b))
121
+ - Size default worker counts by the CPUs the process may use ([a65eaf8](https://github.com/MetaSekaiLab/nnnotes/commit/a65eaf89d9726dcd3200166c3483cded94b30633))
122
+ - **web:** Name --story when the fonts extra is missing ([8cb0f66](https://github.com/MetaSekaiLab/nnnotes/commit/8cb0f66f8e2ffcbc0171bbd0fc1bfbac9be09baa))
123
+
124
+ ### Performance
125
+
126
+ - Reuse decoded textures, shader dumps and cue sheets by content ([1f7c166](https://github.com/MetaSekaiLab/nnnotes/commit/1f7c166d008eb06b0ac6f193ad7958fb88dbf7b4))
127
+ - Pipeline the web build and reuse scenes, BGM decodes and read sets ([25461d1](https://github.com/MetaSekaiLab/nnnotes/commit/25461d12c715369285027d008ebc53f49c73acb6))
128
+ - Start numpy with one OpenBLAS thread unless the environment sets it ([f93d3d2](https://github.com/MetaSekaiLab/nnnotes/commit/f93d3d2d4e1f34e863d96cf17175ead1376d09cc))
129
+ - Serve read-set plans from long-lived player processes ([440ceaa](https://github.com/MetaSekaiLab/nnnotes/commit/440ceaad5c63e83bba4b3a2dde2592467b61c111))
130
+ - **export:** Bound the memory of the finalize and of plan -o ([cad57e6](https://github.com/MetaSekaiLab/nnnotes/commit/cad57e61c4483300f402418501bfb754558287bf))
131
+ - **cli:** Start without UnityPy; --flac-level on audio, live and story ([c5057d5](https://github.com/MetaSekaiLab/nnnotes/commit/c5057d5855b3703308c9b5d7d762821a0498bfaa))
132
+
133
+ ### Refactoring
134
+
135
+ - Rename the site command to web ([43fe4cc](https://github.com/MetaSekaiLab/nnnotes/commit/43fe4cc3e016aa8a773182f8e8995b1ef27b1066))
136
+
137
+ ### Documentation
138
+
139
+ - Remove the contributing guide ([056b4f6](https://github.com/MetaSekaiLab/nnnotes/commit/056b4f64316a5949f99f1cbefd3f0f1d7692a97e))
140
+ - Title the project nnnotes?! ([91b5042](https://github.com/MetaSekaiLab/nnnotes/commit/91b50422fc389945367924bcfdf773954fdafd03))
141
+ - State determinism with its condition; settings per command ([9b0c6f7](https://github.com/MetaSekaiLab/nnnotes/commit/9b0c6f79b651303fca979b3811ffe62d9b7c0c00))
142
+ - Recommend Python 3.13 ([cfea0f5](https://github.com/MetaSekaiLab/nnnotes/commit/cfea0f56be5758dc8b7fa3ca0f8f0191fc38336a))
143
+ - Add performance.md: where a web build spends its time ([a4fb6a0](https://github.com/MetaSekaiLab/nnnotes/commit/a4fb6a0db5a6976630ac9cb069e026078772823a))
144
+ - **performance:** Incremental runs and raw files not in the cache ([69a879c](https://github.com/MetaSekaiLab/nnnotes/commit/69a879ca1d64aecdd5eea3e352cd0861f0a88a66))
145
+
146
+ ### Build
147
+
148
+ - **release:** Publish to PyPI with trusted publishing ([bb542af](https://github.com/MetaSekaiLab/nnnotes/commit/bb542af0d7e22a0255a7ee45099a51eb7fbadd12))
149
+
150
+ ### CI
151
+
152
+ - Check the stage golden records with pinned library versions ([f2594f7](https://github.com/MetaSekaiLab/nnnotes/commit/f2594f70366c8b46d70d638168d43f6dd7949e5b))
153
+
154
+ ### Miscellaneous
155
+
156
+ - List MetaMiku and emptysekai as copyright holders ([1629616](https://github.com/MetaSekaiLab/nnnotes/commit/1629616da629b7fbe7f714287aeff17933176357))
157
+ - List MetaMiku as an author ([cc43e13](https://github.com/MetaSekaiLab/nnnotes/commit/cc43e132875206d02d8665b19c06b27255ab0037))
158
+ - Point the project links at MetaSekaiLab/nnnotes ([a2b8304](https://github.com/MetaSekaiLab/nnnotes/commit/a2b83040bcf06771028bbfd5e90c10c225bde3e9))
159
+ - English package readme; check commits on pull requests only ([e602dd5](https://github.com/MetaSekaiLab/nnnotes/commit/e602dd5ebf6dda0f18da5ace54a02dbb893a796f))
160
+
161
+
@@ -1,36 +1,39 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nnnotes
3
- Version: 0.1.2
4
- Summary: Offline data toolkit for BanG Dream! Our Notes game files: catalogs, bundles, master data, stories, Live2D, audio and live charts
5
- Author: MetaMiku, emptysekai
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/MetaSekaiLab/nnnotes
8
- Project-URL: Source, https://github.com/MetaSekaiLab/nnnotes
9
- Project-URL: Issues, https://github.com/MetaSekaiLab/nnnotes/issues
3
+ Version: 0.1.4
10
4
  Classifier: Programming Language :: Python :: 3
11
5
  Classifier: Operating System :: OS Independent
12
6
  Classifier: Topic :: Multimedia
13
- Requires-Python: >=3.11
14
- Description-Content-Type: text/markdown
15
- License-File: LICENSE
16
- Requires-Dist: UnityPy>=1.25
7
+ Requires-Dist: unitypy>=1.25
17
8
  Requires-Dist: numpy>=2.0
18
- Requires-Dist: Pillow>=10.0
9
+ Requires-Dist: pillow>=10.0
19
10
  Requires-Dist: pycryptodome>=3.20
20
11
  Requires-Dist: grpcio>=1.49.1
21
12
  Requires-Dist: brotli>=1.1
22
- Provides-Extra: test
23
- Requires-Dist: pytest>=8; extra == "test"
24
- Requires-Dist: pyflakes>=3.2; extra == "test"
25
- Requires-Dist: jsonschema>=4.18; extra == "test"
13
+ Requires-Dist: fonttools>=4.50 ; extra == 'fonts'
14
+ Requires-Dist: freetype-py>=2.5 ; extra == 'fonts'
15
+ Requires-Dist: scipy>=1.13 ; extra == 'fonts'
16
+ Requires-Dist: pytest>=8 ; extra == 'test'
17
+ Requires-Dist: pyflakes>=3.2 ; extra == 'test'
18
+ Requires-Dist: jsonschema>=4.18 ; extra == 'test'
26
19
  Provides-Extra: fonts
27
- Requires-Dist: fonttools>=4.50; extra == "fonts"
28
- Requires-Dist: freetype-py>=2.5; extra == "fonts"
29
- Requires-Dist: scipy>=1.13; extra == "fonts"
30
- Dynamic: license-file
20
+ Provides-Extra: test
21
+ License-File: LICENSE
22
+ Summary: Offline data toolkit for BanG Dream! Our Notes game files: catalogs, bundles, master data, stories, Live2D, audio and live charts
23
+ Author: MetaMiku, emptysekai
24
+ License-Expression: MIT
25
+ Requires-Python: >=3.11
26
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
27
+ Project-URL: Homepage, https://github.com/MetaSekaiLab/nnnotes
28
+ Project-URL: Issues, https://github.com/MetaSekaiLab/nnnotes/issues
29
+ Project-URL: Source, https://github.com/MetaSekaiLab/nnnotes
31
30
 
32
31
  # nnnotes?!
33
32
 
33
+ Japanese-release support includes anonymous version discovery, authenticated CDN downloads, gzip catalogs,
34
+ snapshot-isolated caches and split APKs. See the [JP guide](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/jp.md)
35
+ for configuration and validation limits.
36
+
34
37
  [简体中文](https://github.com/MetaSekaiLab/nnnotes/blob/main/README.md) | [English](https://github.com/MetaSekaiLab/nnnotes/blob/main/README.en.md)
35
38
 
36
39
  nnnotes is an offline data toolkit for the game files of BanG Dream! Our Notes: it reads Addressables catalogs,
@@ -78,9 +81,10 @@ nnnotes config check # each setting's origin and whether it is valid
78
81
  | `audio` | CRI cue sheet | one audio file per cue (FLAC / Ogg / WAV) + cue metadata |
79
82
  | `crikey` | APK | the CRI HCA keycode from the game's boot data (shows whether it was found; can write a `.hcakey`) |
80
83
  | `player` | APK | render-related global settings (color space, quality levels, renderers) as JSON |
84
+ | `ui` (experimental) | APK set and its embedded catalog | an offline serialized prefab library with dependency roots, AnimatorControllers, stable references and PNG/font resources for the optional ournotes-player UI preview ([format and limits](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/ui.md)) |
81
85
  | `live` | music ID + difficulty | a full chart directory: chart and runtime notes, 3D scene, note and effect assets, BGM and sounds, sound routing |
82
86
  | `web` | `--pair music:difficulty` (repeatable) or `--all`; `--live2d model` (repeatable) or `--all-live2d`; `--story episode` (repeatable) or `--all-stories`; `--region region` (repeatable) or `--all-regions` | an ournotes-player static site: shared player + per-chart / per-model / per-episode manifests + content-addressed assets; the Live2D models of the stories are built first as models, listed in `models.json`, and the story manifests reference them; one site can serve several regions, with listing texts in five languages; a story's interface texts are grouped by language, with TextMeshPro font assets generated from open fonts (the game's fonts with `--fonts game`); compressible assets (JSON, shaders, moc3, ...) are stored gzip encoded by default (`--compress br` / `none`) |
83
- | `deck-data` | master data files (`--master-files` directory or `--apk-master`) | one JSON file for deck-building tools: every chart's runtime notes, skill events and fever ranges, and the master data tables about cards, skills, bonuses, scores and events ([format](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/deck-data.md)) |
87
+ | `music-data` | master data files (`--master-files` directory or `--apk-master`), or decoded master data with its manifest (`--decoded-master`) | one JSON file with every song and chart: titles and credits in five languages, bands, vocal characters, category, tags, release time, score ranks, BGM length; the Gekisou catalog (member cards, snaps and their Gekisou skills and support skills); per difficulty the level, note counts, BPM, chart times, skill events and fever ranges; and the chart statistics the deck model ournotes-deck (built into nnnotes) measures on its whole-live simulation (the no-skill score, the weight of every score-up skill kind at every position), plus single-shape Gekisou aptitude (increments and standard errors, not an optimal deck; omit with `--no-gekisou-aptitude`). `--full` adds the deck model's input: every chart's runtime notes and the master data tables about cards, skills, bonuses, scores and events ([format](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/music-data.md)) |
84
88
 
85
89
  Export conventions:
86
90
 
@@ -217,6 +221,18 @@ everywhere.
217
221
  See [docs/performance.md](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/performance.md) for where a
218
222
  `web` build spends its time and which parts of it run in compiled code.
219
223
 
224
+ ## Changelog
225
+
226
+ [CHANGELOG.md](https://github.com/MetaSekaiLab/nnnotes/blob/main/CHANGELOG.md) lists the changes in every version,
227
+ generated from the commits by [git-cliff](https://git-cliff.org/). The commit that bumps the version regenerates it:
228
+
229
+ ```bash
230
+ git cliff --tag vX.Y.Z -o CHANGELOG.md
231
+ ```
232
+
233
+ When a `vX.Y.Z` tag is pushed, the release workflow checks the versions and that CHANGELOG.md has a section for it.
234
+
220
235
  ## License
221
236
 
222
237
  MIT, see [LICENSE](https://github.com/MetaSekaiLab/nnnotes/blob/main/LICENSE).
238
+
@@ -1,36 +1,9 @@
1
- Metadata-Version: 2.4
2
- Name: nnnotes
3
- Version: 0.1.2
4
- Summary: Offline data toolkit for BanG Dream! Our Notes game files: catalogs, bundles, master data, stories, Live2D, audio and live charts
5
- Author: MetaMiku, emptysekai
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/MetaSekaiLab/nnnotes
8
- Project-URL: Source, https://github.com/MetaSekaiLab/nnnotes
9
- Project-URL: Issues, https://github.com/MetaSekaiLab/nnnotes/issues
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Operating System :: OS Independent
12
- Classifier: Topic :: Multimedia
13
- Requires-Python: >=3.11
14
- Description-Content-Type: text/markdown
15
- License-File: LICENSE
16
- Requires-Dist: UnityPy>=1.25
17
- Requires-Dist: numpy>=2.0
18
- Requires-Dist: Pillow>=10.0
19
- Requires-Dist: pycryptodome>=3.20
20
- Requires-Dist: grpcio>=1.49.1
21
- Requires-Dist: brotli>=1.1
22
- Provides-Extra: test
23
- Requires-Dist: pytest>=8; extra == "test"
24
- Requires-Dist: pyflakes>=3.2; extra == "test"
25
- Requires-Dist: jsonschema>=4.18; extra == "test"
26
- Provides-Extra: fonts
27
- Requires-Dist: fonttools>=4.50; extra == "fonts"
28
- Requires-Dist: freetype-py>=2.5; extra == "fonts"
29
- Requires-Dist: scipy>=1.13; extra == "fonts"
30
- Dynamic: license-file
31
-
32
1
  # nnnotes?!
33
2
 
3
+ Japanese-release support includes anonymous version discovery, authenticated CDN downloads, gzip catalogs,
4
+ snapshot-isolated caches and split APKs. See the [JP guide](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/jp.md)
5
+ for configuration and validation limits.
6
+
34
7
  [简体中文](https://github.com/MetaSekaiLab/nnnotes/blob/main/README.md) | [English](https://github.com/MetaSekaiLab/nnnotes/blob/main/README.en.md)
35
8
 
36
9
  nnnotes is an offline data toolkit for the game files of BanG Dream! Our Notes: it reads Addressables catalogs,
@@ -78,9 +51,10 @@ nnnotes config check # each setting's origin and whether it is valid
78
51
  | `audio` | CRI cue sheet | one audio file per cue (FLAC / Ogg / WAV) + cue metadata |
79
52
  | `crikey` | APK | the CRI HCA keycode from the game's boot data (shows whether it was found; can write a `.hcakey`) |
80
53
  | `player` | APK | render-related global settings (color space, quality levels, renderers) as JSON |
54
+ | `ui` (experimental) | APK set and its embedded catalog | an offline serialized prefab library with dependency roots, AnimatorControllers, stable references and PNG/font resources for the optional ournotes-player UI preview ([format and limits](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/ui.md)) |
81
55
  | `live` | music ID + difficulty | a full chart directory: chart and runtime notes, 3D scene, note and effect assets, BGM and sounds, sound routing |
82
56
  | `web` | `--pair music:difficulty` (repeatable) or `--all`; `--live2d model` (repeatable) or `--all-live2d`; `--story episode` (repeatable) or `--all-stories`; `--region region` (repeatable) or `--all-regions` | an ournotes-player static site: shared player + per-chart / per-model / per-episode manifests + content-addressed assets; the Live2D models of the stories are built first as models, listed in `models.json`, and the story manifests reference them; one site can serve several regions, with listing texts in five languages; a story's interface texts are grouped by language, with TextMeshPro font assets generated from open fonts (the game's fonts with `--fonts game`); compressible assets (JSON, shaders, moc3, ...) are stored gzip encoded by default (`--compress br` / `none`) |
83
- | `deck-data` | master data files (`--master-files` directory or `--apk-master`) | one JSON file for deck-building tools: every chart's runtime notes, skill events and fever ranges, and the master data tables about cards, skills, bonuses, scores and events ([format](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/deck-data.md)) |
57
+ | `music-data` | master data files (`--master-files` directory or `--apk-master`), or decoded master data with its manifest (`--decoded-master`) | one JSON file with every song and chart: titles and credits in five languages, bands, vocal characters, category, tags, release time, score ranks, BGM length; the Gekisou catalog (member cards, snaps and their Gekisou skills and support skills); per difficulty the level, note counts, BPM, chart times, skill events and fever ranges; and the chart statistics the deck model ournotes-deck (built into nnnotes) measures on its whole-live simulation (the no-skill score, the weight of every score-up skill kind at every position), plus single-shape Gekisou aptitude (increments and standard errors, not an optimal deck; omit with `--no-gekisou-aptitude`). `--full` adds the deck model's input: every chart's runtime notes and the master data tables about cards, skills, bonuses, scores and events ([format](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/music-data.md)) |
84
58
 
85
59
  Export conventions:
86
60
 
@@ -217,6 +191,17 @@ everywhere.
217
191
  See [docs/performance.md](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/performance.md) for where a
218
192
  `web` build spends its time and which parts of it run in compiled code.
219
193
 
194
+ ## Changelog
195
+
196
+ [CHANGELOG.md](https://github.com/MetaSekaiLab/nnnotes/blob/main/CHANGELOG.md) lists the changes in every version,
197
+ generated from the commits by [git-cliff](https://git-cliff.org/). The commit that bumps the version regenerates it:
198
+
199
+ ```bash
200
+ git cliff --tag vX.Y.Z -o CHANGELOG.md
201
+ ```
202
+
203
+ When a `vX.Y.Z` tag is pushed, the release workflow checks the versions and that CHANGELOG.md has a section for it.
204
+
220
205
  ## License
221
206
 
222
207
  MIT, see [LICENSE](https://github.com/MetaSekaiLab/nnnotes/blob/main/LICENSE).
@@ -1,6 +1,6 @@
1
1
  [build-system]
2
- requires = ["setuptools>=77"]
3
- build-backend = "setuptools.build_meta"
2
+ requires = ["maturin>=1.9,<2"]
3
+ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "nnnotes"
@@ -37,14 +37,15 @@ Homepage = "https://github.com/MetaSekaiLab/nnnotes"
37
37
  Source = "https://github.com/MetaSekaiLab/nnnotes"
38
38
  Issues = "https://github.com/MetaSekaiLab/nnnotes/issues"
39
39
 
40
- [tool.setuptools.dynamic]
41
- version = { attr = "nnnotes.__version__" }
42
-
43
- [tool.setuptools.packages.find]
44
- where = ["src"]
45
-
46
- [tool.setuptools.package-data]
47
- nnnotes = ["typetrees/*.json", "viewrules.json", "nnnotes.example.toml"]
40
+ [tool.maturin]
41
+ # the pure Python package src/nnnotes with the extension module nnnotes._deck (rust/: ournotes-sim of ournotes-deck,
42
+ # pinned by commit); the version is rust/Cargo.toml's, kept equal to nnnotes.__version__ (tests/test_musicdata.py)
43
+ python-source = "src"
44
+ module-name = "nnnotes._deck"
45
+ manifest-path = "rust/Cargo.toml"
46
+ profile = "release"
47
+ locked = true
48
+ include = [{ path = "CHANGELOG.md", format = "sdist" }]
48
49
 
49
50
  [tool.pytest.ini_options]
50
51
  testpaths = ["tests"]
@@ -0,0 +1,285 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "block-buffer"
7
+ version = "0.12.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
10
+ dependencies = [
11
+ "hybrid-array",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "cfg-if"
16
+ version = "1.0.5"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
19
+
20
+ [[package]]
21
+ name = "cpufeatures"
22
+ version = "0.3.1"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"
25
+ dependencies = [
26
+ "libc",
27
+ ]
28
+
29
+ [[package]]
30
+ name = "crypto-common"
31
+ version = "0.2.2"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
34
+ dependencies = [
35
+ "hybrid-array",
36
+ ]
37
+
38
+ [[package]]
39
+ name = "digest"
40
+ version = "0.11.3"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
43
+ dependencies = [
44
+ "block-buffer",
45
+ "crypto-common",
46
+ ]
47
+
48
+ [[package]]
49
+ name = "heck"
50
+ version = "0.5.0"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
53
+
54
+ [[package]]
55
+ name = "hybrid-array"
56
+ version = "0.4.15"
57
+ source = "registry+https://github.com/rust-lang/crates.io-index"
58
+ checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17"
59
+ dependencies = [
60
+ "typenum",
61
+ ]
62
+
63
+ [[package]]
64
+ name = "itoa"
65
+ version = "1.0.18"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
68
+
69
+ [[package]]
70
+ name = "libc"
71
+ version = "0.2.189"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
74
+
75
+ [[package]]
76
+ name = "memchr"
77
+ version = "2.8.3"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
80
+
81
+ [[package]]
82
+ name = "nnnotes-deck"
83
+ version = "0.1.4"
84
+ dependencies = [
85
+ "ournotes-sim",
86
+ "pyo3",
87
+ "serde_json",
88
+ ]
89
+
90
+ [[package]]
91
+ name = "once_cell"
92
+ version = "1.21.4"
93
+ source = "registry+https://github.com/rust-lang/crates.io-index"
94
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
95
+
96
+ [[package]]
97
+ name = "ournotes-sim"
98
+ version = "0.0.2"
99
+ source = "git+https://github.com/empty-sekai/ournotes-deck?rev=76e96b617842bdcc031cce98e3dfeead27ddbb85#76e96b617842bdcc031cce98e3dfeead27ddbb85"
100
+ dependencies = [
101
+ "serde",
102
+ "serde_json",
103
+ "sha2",
104
+ ]
105
+
106
+ [[package]]
107
+ name = "portable-atomic"
108
+ version = "1.15.0"
109
+ source = "registry+https://github.com/rust-lang/crates.io-index"
110
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
111
+
112
+ [[package]]
113
+ name = "proc-macro2"
114
+ version = "1.0.107"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
117
+ dependencies = [
118
+ "unicode-ident",
119
+ ]
120
+
121
+ [[package]]
122
+ name = "pyo3"
123
+ version = "0.29.2"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
126
+ dependencies = [
127
+ "libc",
128
+ "once_cell",
129
+ "portable-atomic",
130
+ "pyo3-build-config",
131
+ "pyo3-ffi",
132
+ "pyo3-macros",
133
+ ]
134
+
135
+ [[package]]
136
+ name = "pyo3-build-config"
137
+ version = "0.29.2"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
140
+ dependencies = [
141
+ "target-lexicon",
142
+ ]
143
+
144
+ [[package]]
145
+ name = "pyo3-ffi"
146
+ version = "0.29.2"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
149
+ dependencies = [
150
+ "libc",
151
+ "pyo3-build-config",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "pyo3-macros"
156
+ version = "0.29.2"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
159
+ dependencies = [
160
+ "proc-macro2",
161
+ "pyo3-macros-backend",
162
+ "quote",
163
+ "syn 2.0.119",
164
+ ]
165
+
166
+ [[package]]
167
+ name = "pyo3-macros-backend"
168
+ version = "0.29.2"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
171
+ dependencies = [
172
+ "heck",
173
+ "proc-macro2",
174
+ "quote",
175
+ "syn 2.0.119",
176
+ ]
177
+
178
+ [[package]]
179
+ name = "quote"
180
+ version = "1.0.47"
181
+ source = "registry+https://github.com/rust-lang/crates.io-index"
182
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
183
+ dependencies = [
184
+ "proc-macro2",
185
+ ]
186
+
187
+ [[package]]
188
+ name = "serde"
189
+ version = "1.0.229"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
192
+ dependencies = [
193
+ "serde_core",
194
+ "serde_derive",
195
+ ]
196
+
197
+ [[package]]
198
+ name = "serde_core"
199
+ version = "1.0.229"
200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
201
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
202
+ dependencies = [
203
+ "serde_derive",
204
+ ]
205
+
206
+ [[package]]
207
+ name = "serde_derive"
208
+ version = "1.0.229"
209
+ source = "registry+https://github.com/rust-lang/crates.io-index"
210
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
211
+ dependencies = [
212
+ "proc-macro2",
213
+ "quote",
214
+ "syn 3.0.6",
215
+ ]
216
+
217
+ [[package]]
218
+ name = "serde_json"
219
+ version = "1.0.151"
220
+ source = "registry+https://github.com/rust-lang/crates.io-index"
221
+ checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
222
+ dependencies = [
223
+ "itoa",
224
+ "memchr",
225
+ "serde",
226
+ "serde_core",
227
+ "zmij",
228
+ ]
229
+
230
+ [[package]]
231
+ name = "sha2"
232
+ version = "0.11.0"
233
+ source = "registry+https://github.com/rust-lang/crates.io-index"
234
+ checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
235
+ dependencies = [
236
+ "cfg-if",
237
+ "cpufeatures",
238
+ "digest",
239
+ ]
240
+
241
+ [[package]]
242
+ name = "syn"
243
+ version = "2.0.119"
244
+ source = "registry+https://github.com/rust-lang/crates.io-index"
245
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
246
+ dependencies = [
247
+ "proc-macro2",
248
+ "quote",
249
+ "unicode-ident",
250
+ ]
251
+
252
+ [[package]]
253
+ name = "syn"
254
+ version = "3.0.6"
255
+ source = "registry+https://github.com/rust-lang/crates.io-index"
256
+ checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
257
+ dependencies = [
258
+ "proc-macro2",
259
+ "quote",
260
+ "unicode-ident",
261
+ ]
262
+
263
+ [[package]]
264
+ name = "target-lexicon"
265
+ version = "0.13.5"
266
+ source = "registry+https://github.com/rust-lang/crates.io-index"
267
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
268
+
269
+ [[package]]
270
+ name = "typenum"
271
+ version = "1.20.1"
272
+ source = "registry+https://github.com/rust-lang/crates.io-index"
273
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
274
+
275
+ [[package]]
276
+ name = "unicode-ident"
277
+ version = "1.0.26"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
280
+
281
+ [[package]]
282
+ name = "zmij"
283
+ version = "1.0.23"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"