reproto 0.0.9__tar.gz → 0.1.1__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 (154) hide show
  1. reproto-0.1.1/.git/COMMIT_EDITMSG +1 -0
  2. {reproto-0.0.9 → reproto-0.1.1}/.git/index +0 -0
  3. {reproto-0.0.9 → reproto-0.1.1}/.git/logs/HEAD +4 -0
  4. {reproto-0.0.9 → reproto-0.1.1}/.git/logs/refs/heads/iyue +4 -0
  5. {reproto-0.0.9 → reproto-0.1.1}/.git/logs/refs/remotes/gitlab/iyue +4 -0
  6. {reproto-0.0.9 → reproto-0.1.1}/.git/logs/refs/remotes/origin/iyue +4 -0
  7. reproto-0.1.1/.git/objects/0c/7b11b535a18f311aedadbe91e14fc9fe6b50d9 +0 -0
  8. reproto-0.1.1/.git/objects/1a/4435c23bdf5543e3270aa69361c9c68f205efb +0 -0
  9. reproto-0.1.1/.git/objects/2b/64656ce2df6259c822733b03f26eb828fe9269 +0 -0
  10. reproto-0.1.1/.git/objects/2d/a515dbb88d31400d5b84d41caf270e9309232d +0 -0
  11. reproto-0.1.1/.git/objects/38/907894973091f8e9b224a13fe596e1cb309cf5 +0 -0
  12. reproto-0.1.1/.git/objects/3c/c3ca375694d43e35cdc88d4a5d067e510df427 +0 -0
  13. reproto-0.1.1/.git/objects/3d/3cc6aab4eefed46c77dda27503bebcce88962c +0 -0
  14. reproto-0.1.1/.git/objects/4b/442fccf86631bf5196ee5b48ab8d58228ab59c +0 -0
  15. reproto-0.1.1/.git/objects/5e/9daac72a48ce60688ab2eeddcc3d9152329e20 +0 -0
  16. reproto-0.1.1/.git/objects/67/f27f77274917580e687fd00ca18da0660215c1 +0 -0
  17. reproto-0.1.1/.git/objects/6f/90fcf9eacdc794313471f54279011a787c8760 +0 -0
  18. reproto-0.1.1/.git/objects/7e/5935774ee7a85f2523427c9100f9c578ac172f +1 -0
  19. reproto-0.1.1/.git/objects/92/c6018b4fb8e3b6c2f3f3054a56f2bfaca27470 +0 -0
  20. reproto-0.1.1/.git/objects/a0/d630c3f6024b196d4ee933ab13a32905efdaaa +0 -0
  21. reproto-0.1.1/.git/objects/ae/046e08176523e8a98dc7294436319f724db13c +0 -0
  22. reproto-0.1.1/.git/objects/b0/7a43f0462bf25a8b1f4c0ca60c1b533dae1dde +0 -0
  23. reproto-0.1.1/.git/objects/c8/2a656fe6b5d479b327cdf5fe3bf60db987a2a2 +0 -0
  24. reproto-0.1.1/.git/objects/c8/cb3bb9552dcf6a368a1418996c4b925db2d8ab +0 -0
  25. reproto-0.1.1/.git/objects/e2/b7433fbfbfac5bc800a962be2f4adbed145b42 +0 -0
  26. reproto-0.1.1/.git/objects/e4/1e5aa2bc3074c2014d01ab1f603f69c327a83f +0 -0
  27. reproto-0.1.1/.git/objects/fa/fc981b0d80d8d0323c04365785f66996ed5211 +0 -0
  28. reproto-0.1.1/.git/refs/heads/iyue +1 -0
  29. reproto-0.1.1/.git/refs/remotes/gitlab/iyue +1 -0
  30. reproto-0.1.1/.git/refs/remotes/origin/iyue +1 -0
  31. {reproto-0.0.9 → reproto-0.1.1}/PKG-INFO +1 -1
  32. {reproto-0.0.9 → reproto-0.1.1}/core/info_decoder.py +1 -1
  33. {reproto-0.0.9 → reproto-0.1.1}/core/reconstructor.py +178 -9
  34. {reproto-0.0.9 → reproto-0.1.1}/generation/proto_generator.py +136 -58
  35. {reproto-0.0.9 → reproto-0.1.1}/parsing/java_parser.py +1 -1
  36. {reproto-0.0.9 → reproto-0.1.1}/pyproject.toml +1 -1
  37. reproto-0.0.9/.git/COMMIT_EDITMSG +0 -14
  38. reproto-0.0.9/.git/refs/heads/iyue +0 -1
  39. reproto-0.0.9/.git/refs/remotes/gitlab/iyue +0 -1
  40. reproto-0.0.9/.git/refs/remotes/origin/iyue +0 -1
  41. {reproto-0.0.9 → reproto-0.1.1}/.git/FETCH_HEAD +0 -0
  42. {reproto-0.0.9 → reproto-0.1.1}/.git/HEAD +0 -0
  43. {reproto-0.0.9 → reproto-0.1.1}/.git/config +0 -0
  44. {reproto-0.0.9 → reproto-0.1.1}/.git/description +0 -0
  45. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/applypatch-msg.sample +0 -0
  46. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/commit-msg.sample +0 -0
  47. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/fsmonitor-watchman.sample +0 -0
  48. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/post-update.sample +0 -0
  49. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-applypatch.sample +0 -0
  50. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-commit.sample +0 -0
  51. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-merge-commit.sample +0 -0
  52. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-push.sample +0 -0
  53. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-rebase.sample +0 -0
  54. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/pre-receive.sample +0 -0
  55. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/prepare-commit-msg.sample +0 -0
  56. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/push-to-checkout.sample +0 -0
  57. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/sendemail-validate.sample +0 -0
  58. {reproto-0.0.9 → reproto-0.1.1}/.git/hooks/update.sample +0 -0
  59. {reproto-0.0.9 → reproto-0.1.1}/.git/info/exclude +0 -0
  60. {reproto-0.0.9 → reproto-0.1.1}/.git/logs/refs/remotes/origin/HEAD +0 -0
  61. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/09/a92517fe9eeb33d2fd7c979e01d163665f7abc +0 -0
  62. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/14/d323d58fb90c209a730c17e23fd82a6c735fc1 +0 -0
  63. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/15/eb3f02479e633439ec83c143e703f8448043a1 +0 -0
  64. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/18/89a4fb55eb3abdc528ce87f0cea039278c06fd +0 -0
  65. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/20/cf56ec106bcd66420dd000279f983571b918b6 +0 -0
  66. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/21/55b64d52922c88527c102d62f23e5c2abbae79 +0 -0
  67. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/23/bfbca38e177bcbb423dd782c35b19d127a5ab0 +0 -0
  68. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/26/1f67f3b731b32f6d77de9dd7be2d61e2a14ace +0 -0
  69. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/29/4708b82b343e04e7a6685f5cd1287f3d17f7a9 +0 -0
  70. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/2c/fcddd7eebeb4eee0562dc384a79366bc7b04bb +0 -0
  71. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/2e/2c1c42f5ac5d665cc672d3792078b756d9ab0e +0 -0
  72. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/33/181441ab38eded005db356da89b54c7d29f452 +0 -0
  73. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/33/52dfa8f5d9eb46cc98ea7ccecf02e4d9df95f7 +0 -0
  74. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/34/192f0df5f5b694c881d086019eda349608d222 +0 -0
  75. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/35/8bace20b731ff1bbb256d2a0158dfc84720978 +0 -0
  76. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/3c/6f0120229cc2cd8123efbeb7f186eb0a485f29 +0 -0
  77. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/3e/d953d5ed2c66722045f5e39d068696a0853b4f +0 -0
  78. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/40/84f4567d983a977c49598b7d886e46b13ff50b +0 -0
  79. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/44/4af3a0d68ba81976f67c7b638c9b0db4640709 +0 -0
  80. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/48/369b05749e384be9be58e5f943f3a0040d0f37 +0 -0
  81. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/4b/43f5f577e1cdc35f8e06d178d8f5c892034061 +0 -0
  82. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/4c/16984be6ef7b24d01604821e9728cb579acd69 +0 -0
  83. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/4d/6d457bfabc4af842e5ddc2d56eb059d5dfdc9d +0 -0
  84. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/55/6723fdd4f525eed41c52fa80defca3f0c81c47 +0 -0
  85. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/56/79064a3138031d3a92d60aa629b82009fd0d1d +0 -0
  86. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/58/0d8f872aa869e42ba608f64888b1349f8b3ff4 +0 -0
  87. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/5a/11f9d70791e06a0570e01d3dcbbae39cde55db +0 -0
  88. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/5c/715dcb05e32db7a7a3b030f07524bdd8a56849 +0 -0
  89. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/5d/e2e9d536c2c0b78e8f9b3b61daa531a55332dc +0 -0
  90. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/65/a4f0ada7519f8b1e6a7c7e287541b8effde9fd +0 -0
  91. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/66/7291e131d4769e7d028346a0cc7a0c05d500e5 +0 -0
  92. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/67/f54a4a3ede6749acc7c718ad97a86634215b5e +0 -0
  93. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/70/ded03ee69f30850c938a8129be308cb30772d9 +0 -0
  94. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/76/311aa8e59d780763e0d66787067cc5d9613a67 +0 -0
  95. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/78/3e7e252c20e73e33615c703174766036546ff6 +0 -0
  96. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/7c/00eec7ae9ef5f94fc337e5c8f9793a2a48810d +0 -0
  97. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/8c/809c42c7ae13007fd885ee7bcffae7acf2c520 +0 -0
  98. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/8d/44142ae2d6dbb59d4ebed8587bccd051e5766b +0 -0
  99. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/8d/4a5767bef0c342f1660526f9671c0944922c40 +0 -0
  100. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/94/ce01b61b90d1fb21d2d339fbeb22e821b6f413 +0 -0
  101. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/95/295a15779ebefd563ec777c3d3cced7e8d0209 +0 -0
  102. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/97/56fe0931216a7c40cbf250e1ab8a6dfd589f13 +0 -0
  103. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/97/71dd4958faa94d3db229c129f6af35b508905a +0 -0
  104. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/9a/e313cdf64cd82416c1238eb493e6396f799f12 +0 -0
  105. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/9e/9978522bc8ca79133d7c11ef8ca3fe3c7eed0a +0 -0
  106. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/9f/b57064e0c53ed80af8507acaab718a1e80184e +0 -0
  107. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/a3/cedc28e563a1845a7860161b39b0fe58d5f0d3 +0 -0
  108. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/a5/b7e4e1b63bfb65288f6553687aaabcfb4d51b1 +0 -0
  109. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/b3/28dc445ee33220db9359370fc0089a77174101 +0 -0
  110. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/b3/d2b3037bede44e7e4d18dc99419f8c712c9c62 +0 -0
  111. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/c3/93db4841dbbb8acf54e9af12b6705c9f5ecde9 +0 -0
  112. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/c3/c8594874dd9ff9c21662fd06cac9b5baadbba0 +0 -0
  113. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/c9/a6ca8f8efee4a5632e9a655ced29f1b708f35e +0 -0
  114. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/c9/cdef9ab627b874ffe6455a47583a75bf16496d +0 -0
  115. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/cd/2d6c229438c6b1c694b9392a85888d89ef49c1 +0 -0
  116. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/d0/9c84ad2142a187bf26a1714b7041b62e404c8f +0 -0
  117. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/d9/6d7456245232b3e159dcf691f11e51224c557a +0 -0
  118. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/db/beedb30613f79ae3ff67df1428cf8ade223711 +0 -0
  119. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/df/f8f64cee2b97df7d86f73207c5e690f98f0208 +0 -0
  120. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/e8/1433b6ad92206cdadbee1f474b4f99383314cb +0 -0
  121. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/e8/2f42ea26b8bf4f0bc92c0648ac8f190f14226d +0 -0
  122. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/e9/a15996cb55ac72aeb6611d26e8d22246589943 +0 -0
  123. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/eb/528f06c622d54e411e9e05b3a200b4ac624a90 +0 -0
  124. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/ed/fb5bbf938de738d1f658f80e23c675bb8b3fae +0 -0
  125. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/ef/4844af55f7f64b8dd24b81b5a8322a8c80208e +0 -0
  126. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/f2/2bfffda9fb6a7f37bed04b7c40c9466ef09454 +0 -0
  127. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/f5/18c69a6e1bf3052b79da01502b2837ea58f0f4 +0 -0
  128. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/f7/25a430eb3364460ba854dbc8809edc21dc6c70 +0 -0
  129. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/fc/e15b9dbffd9f37b1f2d46944ee2d0394df6565 +0 -0
  130. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/fd/267d9de63212db235135fa6834f62572224fc6 +0 -0
  131. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.idx +0 -0
  132. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.pack +0 -0
  133. {reproto-0.0.9 → reproto-0.1.1}/.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.rev +0 -0
  134. {reproto-0.0.9 → reproto-0.1.1}/.git/packed-refs +0 -0
  135. {reproto-0.0.9 → reproto-0.1.1}/.git/refs/remotes/origin/HEAD +0 -0
  136. {reproto-0.0.9 → reproto-0.1.1}/.gitignore +0 -0
  137. {reproto-0.0.9 → reproto-0.1.1}/.python-version +0 -0
  138. {reproto-0.0.9 → reproto-0.1.1}/ARCHITECTURE.md +0 -0
  139. {reproto-0.0.9 → reproto-0.1.1}/README.md +0 -0
  140. {reproto-0.0.9 → reproto-0.1.1}/core/__init__.py +0 -0
  141. {reproto-0.0.9 → reproto-0.1.1}/core/bytecode_parser.py +0 -0
  142. {reproto-0.0.9 → reproto-0.1.1}/generation/__init__.py +0 -0
  143. {reproto-0.0.9 → reproto-0.1.1}/main.py +0 -0
  144. {reproto-0.0.9 → reproto-0.1.1}/models/__init__.py +0 -0
  145. {reproto-0.0.9 → reproto-0.1.1}/models/message_definition.py +0 -0
  146. {reproto-0.0.9 → reproto-0.1.1}/parsing/__init__.py +0 -0
  147. {reproto-0.0.9 → reproto-0.1.1}/parsing/enum_parser.py +0 -0
  148. {reproto-0.0.9 → reproto-0.1.1}/requirements.txt +0 -0
  149. {reproto-0.0.9 → reproto-0.1.1}/utils/__init__.py +0 -0
  150. {reproto-0.0.9 → reproto-0.1.1}/utils/file_cache.py +0 -0
  151. {reproto-0.0.9 → reproto-0.1.1}/utils/file_utils.py +0 -0
  152. {reproto-0.0.9 → reproto-0.1.1}/utils/logger.py +0 -0
  153. {reproto-0.0.9 → reproto-0.1.1}/utils/type_index.py +0 -0
  154. {reproto-0.0.9 → reproto-0.1.1}/utils/type_utils.py +0 -0
@@ -0,0 +1 @@
1
+ feat(build): update version
@@ -8,3 +8,7 @@ fce15b9dbffd9f37b1f2d46944ee2d0394df6565 70ded03ee69f30850c938a8129be308cb30772d
8
8
  70ded03ee69f30850c938a8129be308cb30772d9 67f54a4a3ede6749acc7c718ad97a86634215b5e iyue <ys1231@126.com> 1751004413 +0800 commit: feat: 重构类型处理系统,统一Java到Protobuf类型映射
9
9
  67f54a4a3ede6749acc7c718ad97a86634215b5e 9771dd4958faa94d3db229c129f6af35b508905a iyue <ys1231@126.com> 1751006389 +0800 commit: 🚀 性能优化:移除未使用的索引系统,提升执行效率
10
10
  9771dd4958faa94d3db229c129f6af35b508905a 9fb57064e0c53ed80af8507acaab718a1e80184e iyue <ys1231@126.com> 1751006683 +0800 commit: 📚 更新文档:反映最新架构变化和性能优化
11
+ 9fb57064e0c53ed80af8507acaab718a1e80184e e41e5aa2bc3074c2014d01ab1f603f69c327a83f iyue <ys1231@126.com> 1751010339 +0800 commit: feat: 直接使用Java源码中的实际枚举类名
12
+ e41e5aa2bc3074c2014d01ab1f603f69c327a83f b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde iyue <ys1231@126.com> 1751010729 +0800 commit: fix: 改进日志级别和错误处理
13
+ b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde 3d3cc6aab4eefed46c77dda27503bebcce88962c iyue <ys1231@126.com> 1751011389 +0800 commit: release: v2.1.0 - 重大性能优化和功能增强
14
+ 3d3cc6aab4eefed46c77dda27503bebcce88962c 7e5935774ee7a85f2523427c9100f9c578ac172f iyue <ys1231@126.com> 1751011558 +0800 commit: feat(build): update version
@@ -8,3 +8,7 @@ fce15b9dbffd9f37b1f2d46944ee2d0394df6565 70ded03ee69f30850c938a8129be308cb30772d
8
8
  70ded03ee69f30850c938a8129be308cb30772d9 67f54a4a3ede6749acc7c718ad97a86634215b5e iyue <ys1231@126.com> 1751004413 +0800 commit: feat: 重构类型处理系统,统一Java到Protobuf类型映射
9
9
  67f54a4a3ede6749acc7c718ad97a86634215b5e 9771dd4958faa94d3db229c129f6af35b508905a iyue <ys1231@126.com> 1751006389 +0800 commit: 🚀 性能优化:移除未使用的索引系统,提升执行效率
10
10
  9771dd4958faa94d3db229c129f6af35b508905a 9fb57064e0c53ed80af8507acaab718a1e80184e iyue <ys1231@126.com> 1751006683 +0800 commit: 📚 更新文档:反映最新架构变化和性能优化
11
+ 9fb57064e0c53ed80af8507acaab718a1e80184e e41e5aa2bc3074c2014d01ab1f603f69c327a83f iyue <ys1231@126.com> 1751010339 +0800 commit: feat: 直接使用Java源码中的实际枚举类名
12
+ e41e5aa2bc3074c2014d01ab1f603f69c327a83f b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde iyue <ys1231@126.com> 1751010729 +0800 commit: fix: 改进日志级别和错误处理
13
+ b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde 3d3cc6aab4eefed46c77dda27503bebcce88962c iyue <ys1231@126.com> 1751011389 +0800 commit: release: v2.1.0 - 重大性能优化和功能增强
14
+ 3d3cc6aab4eefed46c77dda27503bebcce88962c 7e5935774ee7a85f2523427c9100f9c578ac172f iyue <ys1231@126.com> 1751011558 +0800 commit: feat(build): update version
@@ -7,3 +7,7 @@ fce15b9dbffd9f37b1f2d46944ee2d0394df6565 70ded03ee69f30850c938a8129be308cb30772d
7
7
  70ded03ee69f30850c938a8129be308cb30772d9 67f54a4a3ede6749acc7c718ad97a86634215b5e iyue <ys1231@126.com> 1751004471 +0800 update by push
8
8
  67f54a4a3ede6749acc7c718ad97a86634215b5e 9771dd4958faa94d3db229c129f6af35b508905a iyue <ys1231@126.com> 1751006413 +0800 update by push
9
9
  9771dd4958faa94d3db229c129f6af35b508905a 9fb57064e0c53ed80af8507acaab718a1e80184e iyue <ys1231@126.com> 1751006704 +0800 update by push
10
+ 9fb57064e0c53ed80af8507acaab718a1e80184e e41e5aa2bc3074c2014d01ab1f603f69c327a83f iyue <ys1231@126.com> 1751010362 +0800 update by push
11
+ e41e5aa2bc3074c2014d01ab1f603f69c327a83f b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde iyue <ys1231@126.com> 1751010753 +0800 update by push
12
+ b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde 3d3cc6aab4eefed46c77dda27503bebcce88962c iyue <ys1231@126.com> 1751011478 +0800 update by push
13
+ 3d3cc6aab4eefed46c77dda27503bebcce88962c 7e5935774ee7a85f2523427c9100f9c578ac172f iyue <ys1231@126.com> 1751011568 +0800 update by push
@@ -7,3 +7,7 @@ fce15b9dbffd9f37b1f2d46944ee2d0394df6565 70ded03ee69f30850c938a8129be308cb30772d
7
7
  70ded03ee69f30850c938a8129be308cb30772d9 67f54a4a3ede6749acc7c718ad97a86634215b5e iyue <ys1231@126.com> 1751004455 +0800 update by push
8
8
  67f54a4a3ede6749acc7c718ad97a86634215b5e 9771dd4958faa94d3db229c129f6af35b508905a iyue <ys1231@126.com> 1751006400 +0800 update by push
9
9
  9771dd4958faa94d3db229c129f6af35b508905a 9fb57064e0c53ed80af8507acaab718a1e80184e iyue <ys1231@126.com> 1751006693 +0800 update by push
10
+ 9fb57064e0c53ed80af8507acaab718a1e80184e e41e5aa2bc3074c2014d01ab1f603f69c327a83f iyue <ys1231@126.com> 1751010348 +0800 update by push
11
+ e41e5aa2bc3074c2014d01ab1f603f69c327a83f b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde iyue <ys1231@126.com> 1751010741 +0800 update by push
12
+ b07a43f0462bf25a8b1f4c0ca60c1b533dae1dde 3d3cc6aab4eefed46c77dda27503bebcce88962c iyue <ys1231@126.com> 1751011447 +0800 update by push
13
+ 3d3cc6aab4eefed46c77dda27503bebcce88962c 7e5935774ee7a85f2523427c9100f9c578ac172f iyue <ys1231@126.com> 1751011577 +0800 update by push
@@ -0,0 +1 @@
1
+ x��]j�0E�>k��R(����RB�2����:�\��%���Ƕu] ����1��UѩJ,�i��,��Y�̐���2(y2+�}��X��*5������\Ă�g�i�����%�7K��m=�̑9�F����5�4g�x����o�t\]��m�.��tCr
@@ -0,0 +1 @@
1
+ 7e5935774ee7a85f2523427c9100f9c578ac172f
@@ -0,0 +1 @@
1
+ 7e5935774ee7a85f2523427c9100f9c578ac172f
@@ -0,0 +1 @@
1
+ 7e5935774ee7a85f2523427c9100f9c578ac172f
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: reproto
3
- Version: 0.0.9
3
+ Version: 0.1.1
4
4
  Summary: 一个强大的逆向工程工具, 能够从任何使用Google Protobuf Lite的Android应用中自动重构出完整的.proto文件结构.
5
5
  License: Proprietary
6
6
  Keywords: protobuf,reverse-engineering,android,jadx,proto
@@ -547,7 +547,7 @@ class InfoDecoder:
547
547
  return real_type # 返回原始Java类型
548
548
  return None
549
549
  except Exception as e:
550
- self.logger.warning(f" ⚠️ 源码分析失败: {e}")
550
+ self.logger.debug(f" 🔍 源码分析失败: {e}")
551
551
  return None
552
552
 
553
553
  def _infer_message_type_from_field_name(self, field_name_raw: str) -> str:
@@ -10,6 +10,7 @@ Author: AI Assistant
10
10
  """
11
11
 
12
12
  import re
13
+ import os
13
14
  from pathlib import Path
14
15
  from collections import deque
15
16
  from typing import Set, Dict, List, Optional, Tuple
@@ -408,7 +409,7 @@ class ProtoReconstructor:
408
409
  target_package = '.'.join(first_class.split('.')[:-1])
409
410
 
410
411
  if not target_package:
411
- self.logger.warning("⚠️ 无法推断目标包名,跳过枚举解析")
412
+ self.logger.error("无法推断目标包名,跳过枚举解析")
412
413
  return
413
414
 
414
415
  # 解析目标包下的所有枚举
@@ -446,7 +447,7 @@ class ProtoReconstructor:
446
447
  if not java_file_path:
447
448
  error_msg = "找不到对应的Java文件"
448
449
  self.failed_classes[class_name] = error_msg
449
- self.logger.warning(f" ❌ {error_msg}: {class_name}")
450
+ self.logger.error(f" ❌ {error_msg}: {class_name}")
450
451
  return
451
452
 
452
453
  # 2. 尝试解析为枚举
@@ -463,7 +464,7 @@ class ProtoReconstructor:
463
464
  if not info_string:
464
465
  error_msg = "无法从Java文件中提取protobuf信息"
465
466
  self.failed_classes[class_name] = error_msg
466
- self.logger.warning(f" ❌ {error_msg}: {class_name}")
467
+ self.logger.error(f" ❌ {error_msg}: {class_name}")
467
468
  return
468
469
 
469
470
  # 4. 解码字节码为消息定义
@@ -480,7 +481,7 @@ class ProtoReconstructor:
480
481
  else:
481
482
  error_msg = "字节码解码失败,可能不是protobuf消息类"
482
483
  self.failed_classes[class_name] = error_msg
483
- self.logger.warning(f" ❌ {error_msg}: {class_name}")
484
+ self.logger.error(f" ❌ {error_msg}: {class_name}")
484
485
 
485
486
  except Exception as e:
486
487
  error_msg = f"处理异常: {str(e)}"
@@ -507,6 +508,18 @@ class ProtoReconstructor:
507
508
  self.pending_classes.append(dep)
508
509
  self.logger.info(f" 🔗 发现依赖: {dep}")
509
510
 
511
+ # 处理枚举依赖
512
+ self.logger.info(f" 🔍 开始处理枚举依赖...")
513
+ enum_count = 0
514
+ for field in message_def.fields:
515
+ if self._is_enum_type(field.type_name):
516
+ self.logger.info(f" 🔢 发现枚举字段: {field.name} -> {field.type_name}")
517
+ self._process_enum_dependency(field.type_name)
518
+ enum_count += 1
519
+
520
+ if enum_count == 0:
521
+ self.logger.info(f" 📊 未发现枚举依赖")
522
+
510
523
  def _extract_dependencies(self, message_def: MessageDefinition) -> List[str]:
511
524
  """
512
525
  从消息定义中提取所有依赖的类名
@@ -535,7 +548,7 @@ class ProtoReconstructor:
535
548
 
536
549
  def _extract_field_dependencies(self, type_name: str, current_package: str) -> List[str]:
537
550
  """
538
- 从字段类型中提取所有依赖(包括map类型的键值类型)
551
+ 从字段类型中提取所有依赖(包括map类型的键值类型和枚举类型)
539
552
 
540
553
  Args:
541
554
  type_name: 字段类型名
@@ -561,12 +574,168 @@ class ProtoReconstructor:
561
574
 
562
575
  # 处理普通类型
563
576
  else:
564
- dep = self._resolve_field_dependency(type_name, current_package)
565
- if dep:
566
- dependencies.append(dep)
577
+ # 检查是否为枚举类型(以Enum开头或已知的枚举模式)
578
+ if self._is_enum_type(type_name):
579
+ # 直接处理枚举类型,尝试解析并添加到枚举定义中
580
+ self._process_enum_dependency(type_name)
581
+ else:
582
+ # 处理消息类型依赖
583
+ dep = self._resolve_field_dependency(type_name, current_package)
584
+ if dep:
585
+ dependencies.append(dep)
567
586
 
568
587
  return dependencies
569
588
 
589
+ def _is_enum_type(self, type_name: str) -> bool:
590
+ """
591
+ 判断类型名是否为枚举类型
592
+
593
+ Args:
594
+ type_name: 类型名
595
+
596
+ Returns:
597
+ 是否为枚举类型
598
+ """
599
+ # 检查是否以Enum开头(混淆后的枚举名)
600
+ if type_name.startswith('Enum'):
601
+ return True
602
+
603
+ # 检查是否在已知的枚举类型列表中
604
+ # 这里可以添加更多的枚举类型判断逻辑
605
+ return False
606
+
607
+ def _process_enum_dependency(self, type_name: str) -> None:
608
+ """
609
+ 处理枚举依赖,查找并解析枚举类
610
+
611
+ Args:
612
+ type_name: 枚举类型名
613
+ """
614
+ try:
615
+ self.logger.info(f" 🔍 搜索枚举文件: {type_name}")
616
+ # 尝试在所有包中查找这个枚举类
617
+ enum_file_path = self._find_enum_file(type_name)
618
+ if enum_file_path:
619
+ self.logger.info(f" ✅ 找到枚举文件: {enum_file_path}")
620
+ # 解析枚举文件
621
+ enum_values = self.java_parser.parse_enum_file(enum_file_path)
622
+ if enum_values:
623
+ # 构造完整的枚举类名
624
+ enum_class_name = self._get_enum_class_name_from_path(enum_file_path)
625
+ self.logger.info(f" 📝 枚举类名: {enum_class_name}")
626
+
627
+ # 创建枚举定义
628
+ enum_def = self._create_enum_definition(enum_class_name, enum_values)
629
+
630
+ # 检查是否有原始名称,如果有则使用原始名称
631
+ original_name = self._extract_original_enum_name(enum_file_path)
632
+ if original_name:
633
+ self.logger.info(f" 🏷️ 使用原始名称: {original_name}")
634
+ enum_def.name = original_name
635
+
636
+ # 添加到枚举定义中
637
+ self.enum_definitions[enum_class_name] = enum_def
638
+ self.logger.info(f" ✅ 成功处理枚举依赖: {enum_def.name} ({len(enum_def.values)} 个值)")
639
+ else:
640
+ self.logger.error(f" ❌ 枚举值解析失败: {enum_file_path}")
641
+ else:
642
+ self.logger.error(f" ❌ 未找到枚举文件: {type_name}")
643
+
644
+ except Exception as e:
645
+ self.logger.error(f" ❌ 处理枚举依赖失败 {type_name}: {e}")
646
+ import traceback
647
+ self.logger.debug(f" 详细错误: {traceback.format_exc()}")
648
+
649
+ def _find_enum_file(self, type_name: str) -> Optional[Path]:
650
+ """
651
+ 在所有包中查找枚举文件
652
+
653
+ Args:
654
+ type_name: 枚举类型名
655
+
656
+ Returns:
657
+ 枚举文件路径或None
658
+ """
659
+ # 在整个源码目录中搜索匹配的枚举文件
660
+ for root, dirs, files in os.walk(self.sources_dir):
661
+ for file in files:
662
+ if file.endswith('.java') and type_name in file:
663
+ file_path = Path(root) / file
664
+ # 检查是否确实是这个枚举类
665
+ if self._is_target_enum_file(file_path, type_name):
666
+ return file_path
667
+ return None
668
+
669
+ def _is_target_enum_file(self, file_path: Path, type_name: str) -> bool:
670
+ """
671
+ 检查文件是否是目标枚举类
672
+
673
+ Args:
674
+ file_path: Java文件路径
675
+ type_name: 目标枚举类型名
676
+
677
+ Returns:
678
+ 是否为目标枚举文件
679
+ """
680
+ try:
681
+ content = file_path.read_text(encoding='utf-8')
682
+ # 检查是否包含目标枚举类声明
683
+ enum_pattern = f'public\\s+enum\\s+{re.escape(type_name)}\\s+implements\\s+Internal\\.EnumLite'
684
+ return bool(re.search(enum_pattern, content))
685
+ except Exception:
686
+ return False
687
+
688
+ def _get_enum_class_name_from_path(self, file_path: Path) -> str:
689
+ """
690
+ 从文件路径构造完整的枚举类名
691
+
692
+ Args:
693
+ file_path: 枚举文件路径
694
+
695
+ Returns:
696
+ 完整的枚举类名
697
+ """
698
+ # 获取相对于源码目录的路径
699
+ relative_path = file_path.relative_to(self.sources_dir)
700
+
701
+ # 移除.java后缀并转换为类名
702
+ class_path = str(relative_path)[:-5] # 移除.java
703
+ class_name = class_path.replace('/', '.')
704
+
705
+ return class_name
706
+
707
+ def _extract_original_enum_name(self, file_path: Path) -> Optional[str]:
708
+ """
709
+ 从Java源码中提取实际的枚举类名
710
+
711
+ Args:
712
+ file_path: Java文件路径
713
+
714
+ Returns:
715
+ Java源码中定义的实际枚举类名
716
+ """
717
+ try:
718
+ content = file_path.read_text(encoding='utf-8')
719
+
720
+ # 查找枚举类定义: public enum ClassName 或 enum ClassName
721
+ enum_pattern = r'(?:public\s+)?enum\s+(\w+)'
722
+ match = re.search(enum_pattern, content)
723
+
724
+ if match:
725
+ enum_name = match.group(1)
726
+ self.logger.info(f" 🏷️ 从Java源码提取枚举名: {enum_name}")
727
+ return enum_name
728
+ else:
729
+ # 如果没找到enum定义,可能是接口或其他类型,使用文件名
730
+ file_name = file_path.stem
731
+ self.logger.info(f" 🏷️ 未找到enum定义,使用文件名: {file_name}")
732
+ return file_name
733
+
734
+ except Exception as e:
735
+ self.logger.debug(f" 提取枚举名失败: {e}")
736
+ # 出错时使用文件名作为fallback
737
+ return file_path.stem
738
+
570
739
  def _parse_map_types(self, map_content: str) -> tuple:
571
740
  """
572
741
  解析map类型的键值类型
@@ -1143,7 +1312,7 @@ class ProtoReconstructor:
1143
1312
  try:
1144
1313
  # 生成proto文件内容
1145
1314
  proto_content = self.proto_generator.generate_proto_file(
1146
- message_def, self.message_definitions
1315
+ message_def, self.message_definitions, self.enum_definitions
1147
1316
  )
1148
1317
 
1149
1318
  # 确定输出路径并创建目录