lixinger-python 0.3.9__tar.gz → 0.3.11__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 (488) hide show
  1. lixinger_python-0.3.11/.claude/settings.local.json +16 -0
  2. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.ruff.toml +21 -4
  3. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/ADD_NEW_API_QUICK.md +9 -13
  4. lixinger_python-0.3.11/ARCHITECTURE.md +61 -0
  5. lixinger_python-0.3.11/CLAUDE.md +116 -0
  6. lixinger_python-0.3.11/DOCUMENTATION.md +22 -0
  7. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/PKG-INFO +1 -1
  8. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/PUBLISHING.md +3 -91
  9. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/company_profile_example.py +2 -2
  10. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/__init__.py +9 -0
  11. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/base.py +1 -1
  12. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/namespace.py +3 -3
  13. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/namespace.py +22 -18
  14. lixinger_python-0.3.11/lixinger/api/cn/industry/__init__.py +21 -0
  15. lixinger_python-0.3.11/lixinger/api/cn/industry/margin_trading/__init__.py +33 -0
  16. lixinger_python-0.3.11/lixinger/api/cn/industry/margin_trading/cni.py +129 -0
  17. lixinger_python-0.3.11/lixinger/api/cn/industry/margin_trading/sw.py +129 -0
  18. lixinger_python-0.3.11/lixinger/api/cn/industry/margin_trading/sw_2021.py +129 -0
  19. lixinger_python-0.3.11/lixinger/api/cn/industry/namespace.py +88 -0
  20. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/client.py +41 -4
  21. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/exceptions.py +1 -1
  22. lixinger_python-0.3.11/lixinger/models/cn/industry/__init__.py +13 -0
  23. lixinger_python-0.3.11/lixinger/models/cn/industry/margin_trading/__init__.py +11 -0
  24. lixinger_python-0.3.11/lixinger/models/cn/industry/margin_trading/cni.py +29 -0
  25. lixinger_python-0.3.11/lixinger/models/cn/industry/margin_trading/sw.py +29 -0
  26. lixinger_python-0.3.11/lixinger/models/cn/industry/margin_trading/sw_2021.py +29 -0
  27. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/rate_limiter.py +1 -1
  28. lixinger_python-0.3.11/lixinger-api/REMINDER.md +31 -0
  29. lixinger_python-0.3.11/lixinger-api/cn/company/allotment.md +59 -0
  30. lixinger_python-0.3.11/lixinger-api/cn/company/announcement.md +108 -0
  31. lixinger_python-0.3.11/lixinger-api/cn/company/block-deal.md +142 -0
  32. lixinger_python-0.3.11/lixinger-api/cn/company/candlestick.md +123 -0
  33. lixinger_python-0.3.11/lixinger-api/cn/company/customers.md +133 -0
  34. lixinger_python-0.3.11/lixinger-api/cn/company/dividend.md +111 -0
  35. lixinger_python-0.3.11/lixinger-api/cn/company/equity-change.md +114 -0
  36. lixinger_python-0.3.11/lixinger-api/cn/company/fs/bank.md +691 -0
  37. lixinger_python-0.3.11/lixinger-api/cn/company/fs/insurance.md +674 -0
  38. lixinger_python-0.3.11/lixinger-api/cn/company/fs/non_financial.md +756 -0
  39. lixinger_python-0.3.11/lixinger-api/cn/company/fs/other_financial.md +547 -0
  40. lixinger_python-0.3.11/lixinger-api/cn/company/fs/security.md +620 -0
  41. lixinger_python-0.3.11/lixinger-api/cn/company/fund-collection-shareholders.md +88 -0
  42. lixinger_python-0.3.11/lixinger-api/cn/company/fund-shareholders.md +99 -0
  43. lixinger_python-0.3.11/lixinger-api/cn/company/fundamental/bank.md +196 -0
  44. lixinger_python-0.3.11/lixinger-api/cn/company/fundamental/insurance.md +190 -0
  45. lixinger_python-0.3.11/lixinger-api/cn/company/fundamental/non_financial.md +155 -0
  46. lixinger_python-0.3.11/lixinger-api/cn/company/fundamental/other_financial.md +188 -0
  47. lixinger_python-0.3.11/lixinger-api/cn/company/fundamental/security.md +188 -0
  48. lixinger_python-0.3.11/lixinger-api/cn/company/hot/capita.md +158 -0
  49. lixinger_python-0.3.11/lixinger-api/cn/company/hot/df.md +128 -0
  50. lixinger_python-0.3.11/lixinger-api/cn/company/hot/elr.md +136 -0
  51. lixinger_python-0.3.11/lixinger-api/cn/company/hot/esc.md +177 -0
  52. lixinger_python-0.3.11/lixinger-api/cn/company/hot/mm_ha.md +435 -0
  53. lixinger_python-0.3.11/lixinger-api/cn/company/hot/mssc.md +191 -0
  54. lixinger_python-0.3.11/lixinger-api/cn/company/hot/mtasl.md +267 -0
  55. lixinger_python-0.3.11/lixinger-api/cn/company/hot/npd.md +128 -0
  56. lixinger_python-0.3.11/lixinger-api/cn/company/hot/ple.md +142 -0
  57. lixinger_python-0.3.11/lixinger-api/cn/company/hot/shnc.md +174 -0
  58. lixinger_python-0.3.11/lixinger-api/cn/company/hot/t_a.md +148 -0
  59. lixinger_python-0.3.11/lixinger-api/cn/company/hot/tr.md +175 -0
  60. lixinger_python-0.3.11/lixinger-api/cn/company/hot/tr_dri.md +182 -0
  61. lixinger_python-0.3.11/lixinger-api/cn/company/indices.md +116 -0
  62. lixinger_python-0.3.11/lixinger-api/cn/company/industries.md +115 -0
  63. lixinger_python-0.3.11/lixinger-api/cn/company/inquiry.md +88 -0
  64. lixinger_python-0.3.11/lixinger-api/cn/company/major-shareholders-shares-change.md +152 -0
  65. lixinger_python-0.3.11/lixinger-api/cn/company/majority-shareholders.md +99 -0
  66. lixinger_python-0.3.11/lixinger-api/cn/company/margin-trading-and-securities-lending.md +107 -0
  67. lixinger_python-0.3.11/lixinger-api/cn/company/measures.md +93 -0
  68. lixinger_python-0.3.11/lixinger-api/cn/company/mutual-market.md +68 -0
  69. lixinger_python-0.3.11/lixinger-api/cn/company/nolimit-shareholders.md +108 -0
  70. lixinger_python-0.3.11/lixinger-api/cn/company/operating-data.md +286 -0
  71. lixinger_python-0.3.11/lixinger-api/cn/company/operation-revenue-constitution.md +308 -0
  72. lixinger_python-0.3.11/lixinger-api/cn/company/pledge.md +67 -0
  73. lixinger_python-0.3.11/lixinger-api/cn/company/profile.md +127 -0
  74. lixinger_python-0.3.11/lixinger-api/cn/company/senior-executive-shares-change.md +130 -0
  75. lixinger_python-0.3.11/lixinger-api/cn/company/shareholders-num.md +79 -0
  76. lixinger_python-0.3.11/lixinger-api/cn/company/suppliers.md +131 -0
  77. lixinger_python-0.3.11/lixinger-api/cn/company/trading-abnormal.md +320 -0
  78. lixinger_python-0.3.11/lixinger-api/cn/company/volatility.md +69 -0
  79. lixinger_python-0.3.11/lixinger-api/cn/company.md +302 -0
  80. lixinger_python-0.3.11/lixinger-api/cn/fund/announcement.md +97 -0
  81. lixinger_python-0.3.11/lixinger-api/cn/fund/asset-combination.md +134 -0
  82. lixinger_python-0.3.11/lixinger-api/cn/fund/asset-industry-combination.md +163 -0
  83. lixinger_python-0.3.11/lixinger-api/cn/fund/candlestick.md +93 -0
  84. lixinger_python-0.3.11/lixinger-api/cn/fund/dividend.md +56 -0
  85. lixinger_python-0.3.11/lixinger-api/cn/fund/drawdown.md +79 -0
  86. lixinger_python-0.3.11/lixinger-api/cn/fund/fees.md +73 -0
  87. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/f_as.md +123 -0
  88. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/f_nlacan.md +176 -0
  89. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/fet_s.md +214 -0
  90. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/ff.md +160 -0
  91. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/fp.md +152 -0
  92. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/fpr.md +207 -0
  93. lixinger_python-0.3.11/lixinger-api/cn/fund/hot/fss.md +154 -0
  94. lixinger_python-0.3.11/lixinger-api/cn/fund/manager.md +108 -0
  95. lixinger_python-0.3.11/lixinger-api/cn/fund/net-value-of-dividend-reinvestment.md +68 -0
  96. lixinger_python-0.3.11/lixinger-api/cn/fund/net-value.md +68 -0
  97. lixinger_python-0.3.11/lixinger-api/cn/fund/profile.md +111 -0
  98. lixinger_python-0.3.11/lixinger-api/cn/fund/shareholders-structure.md +73 -0
  99. lixinger_python-0.3.11/lixinger-api/cn/fund/shareholdings.md +88 -0
  100. lixinger_python-0.3.11/lixinger-api/cn/fund/shares.md +78 -0
  101. lixinger_python-0.3.11/lixinger-api/cn/fund/split.md +55 -0
  102. lixinger_python-0.3.11/lixinger-api/cn/fund/total-net-value.md +68 -0
  103. lixinger_python-0.3.11/lixinger-api/cn/fund/turnover-rate.md +60 -0
  104. lixinger_python-0.3.11/lixinger-api/cn/fund/volatility.md +69 -0
  105. lixinger_python-0.3.11/lixinger-api/cn/fund-company/asset-scale.md +80 -0
  106. lixinger_python-0.3.11/lixinger-api/cn/fund-company/fund-list.md +950 -0
  107. lixinger_python-0.3.11/lixinger-api/cn/fund-company/fund-manager-list.md +272 -0
  108. lixinger_python-0.3.11/lixinger-api/cn/fund-company/hot/fc_as.md +198 -0
  109. lixinger_python-0.3.11/lixinger-api/cn/fund-company/hot/fc_asr.md +246 -0
  110. lixinger_python-0.3.11/lixinger-api/cn/fund-company/shareholdings.md +78 -0
  111. lixinger_python-0.3.11/lixinger-api/cn/fund-company.md +117 -0
  112. lixinger_python-0.3.11/lixinger-api/cn/fund-manager/hot/fmi.md +311 -0
  113. lixinger_python-0.3.11/lixinger-api/cn/fund-manager/hot/fmp.md +297 -0
  114. lixinger_python-0.3.11/lixinger-api/cn/fund-manager/management-funds.md +154 -0
  115. lixinger_python-0.3.11/lixinger-api/cn/fund-manager/profit-ratio.md +56 -0
  116. lixinger_python-0.3.11/lixinger-api/cn/fund-manager/shareholdings.md +58 -0
  117. lixinger_python-0.3.11/lixinger-api/cn/fund-manager.md +108 -0
  118. lixinger_python-0.3.11/lixinger-api/cn/fund.md +150 -0
  119. lixinger_python-0.3.11/lixinger-api/cn/index/candlestick.md +103 -0
  120. lixinger_python-0.3.11/lixinger-api/cn/index/constituent-weightings.md +85 -0
  121. lixinger_python-0.3.11/lixinger-api/cn/index/constituents.md +514 -0
  122. lixinger_python-0.3.11/lixinger-api/cn/index/drawdown.md +79 -0
  123. lixinger_python-0.3.11/lixinger-api/cn/index/fs/bank.md +589 -0
  124. lixinger_python-0.3.11/lixinger-api/cn/index/fs/hybrid.md +449 -0
  125. lixinger_python-0.3.11/lixinger-api/cn/index/fs/non_financial.md +669 -0
  126. lixinger_python-0.3.11/lixinger-api/cn/index/fs/security.md +568 -0
  127. lixinger_python-0.3.11/lixinger-api/cn/index/fundamental.md +192 -0
  128. lixinger_python-0.3.11/lixinger-api/cn/index/hot/cp.md +203 -0
  129. lixinger_python-0.3.11/lixinger-api/cn/index/hot/ic.md +107 -0
  130. lixinger_python-0.3.11/lixinger-api/cn/index/hot/ifet_sni.md +156 -0
  131. lixinger_python-0.3.11/lixinger-api/cn/index/hot/mm_ha.md +198 -0
  132. lixinger_python-0.3.11/lixinger-api/cn/index/hot/mtasl.md +209 -0
  133. lixinger_python-0.3.11/lixinger-api/cn/index/hot/tr.md +142 -0
  134. lixinger_python-0.3.11/lixinger-api/cn/index/hot/tr_cp.md +159 -0
  135. lixinger_python-0.3.11/lixinger-api/cn/index/margin-trading-and-securities-lending.md +96 -0
  136. lixinger_python-0.3.11/lixinger-api/cn/index/mutual-market.md +76 -0
  137. lixinger_python-0.3.11/lixinger-api/cn/index/tracking-fund.md +79 -0
  138. lixinger_python-0.3.11/lixinger-api/cn/index/volatility.md +69 -0
  139. lixinger_python-0.3.11/lixinger-api/cn/index.md +166 -0
  140. lixinger_python-0.3.11/lixinger-api/cn/industry/constituents/cni.md +1135 -0
  141. lixinger_python-0.3.11/lixinger-api/cn/industry/constituents/sw.md +784 -0
  142. lixinger_python-0.3.11/lixinger-api/cn/industry/constituents/sw_2021.md +802 -0
  143. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/cni/bank.md +589 -0
  144. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/cni/hybrid.md +449 -0
  145. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/cni/insurance.md +587 -0
  146. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/cni/non_financial.md +669 -0
  147. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/cni/security.md +552 -0
  148. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw/bank.md +589 -0
  149. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw/hybrid.md +449 -0
  150. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw/insurance.md +588 -0
  151. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw/non_financial.md +669 -0
  152. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw/security.md +552 -0
  153. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw_2021/bank.md +589 -0
  154. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw_2021/hybrid.md +449 -0
  155. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw_2021/insurance.md +588 -0
  156. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw_2021/non_financial.md +669 -0
  157. lixinger_python-0.3.11/lixinger-api/cn/industry/fs/sw_2021/security.md +552 -0
  158. lixinger_python-0.3.11/lixinger-api/cn/industry/fundamental/cni.md +184 -0
  159. lixinger_python-0.3.11/lixinger-api/cn/industry/fundamental/sw.md +184 -0
  160. lixinger_python-0.3.11/lixinger-api/cn/industry/fundamental/sw_2021.md +184 -0
  161. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mm_ha/cni.md +199 -0
  162. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mm_ha/sw.md +199 -0
  163. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mm_ha/sw_2021.md +199 -0
  164. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mtasl/cni.md +207 -0
  165. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mtasl/sw.md +207 -0
  166. lixinger_python-0.3.11/lixinger-api/cn/industry/hot/mtasl/sw_2021.md +207 -0
  167. lixinger_python-0.3.11/lixinger-api/cn/industry/margin-trading-and-securities-lending/cni.md +96 -0
  168. lixinger_python-0.3.11/lixinger-api/cn/industry/margin-trading-and-securities-lending/sw.md +96 -0
  169. lixinger_python-0.3.11/lixinger-api/cn/industry/margin-trading-and-securities-lending/sw_2021.md +96 -0
  170. lixinger_python-0.3.11/lixinger-api/cn/industry/mutual-market/cni.md +76 -0
  171. lixinger_python-0.3.11/lixinger-api/cn/industry/mutual-market/sw.md +76 -0
  172. lixinger_python-0.3.11/lixinger-api/cn/industry/mutual-market/sw_2021.md +76 -0
  173. lixinger_python-0.3.11/lixinger-api/cn/industry.md +151 -0
  174. lixinger_python-0.3.11/lixinger-api/hk/company/allotment.md +59 -0
  175. lixinger_python-0.3.11/lixinger-api/hk/company/announcement.md +96 -0
  176. lixinger_python-0.3.11/lixinger-api/hk/company/candlestick.md +122 -0
  177. lixinger_python-0.3.11/lixinger-api/hk/company/dividend.md +93 -0
  178. lixinger_python-0.3.11/lixinger-api/hk/company/employee.md +445 -0
  179. lixinger_python-0.3.11/lixinger-api/hk/company/equity-change.md +80 -0
  180. lixinger_python-0.3.11/lixinger-api/hk/company/fs/bank.md +452 -0
  181. lixinger_python-0.3.11/lixinger-api/hk/company/fs/insurance.md +505 -0
  182. lixinger_python-0.3.11/lixinger-api/hk/company/fs/non_financial.md +534 -0
  183. lixinger_python-0.3.11/lixinger-api/hk/company/fs/other_financial.md +418 -0
  184. lixinger_python-0.3.11/lixinger-api/hk/company/fs/reit.md +439 -0
  185. lixinger_python-0.3.11/lixinger-api/hk/company/fs/security.md +463 -0
  186. lixinger_python-0.3.11/lixinger-api/hk/company/fund-collection-shareholders.md +83 -0
  187. lixinger_python-0.3.11/lixinger-api/hk/company/fund-shareholders.md +94 -0
  188. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/bank.md +173 -0
  189. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/insurance.md +175 -0
  190. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/non_financial.md +173 -0
  191. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/other_financial.md +173 -0
  192. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/reit.md +173 -0
  193. lixinger_python-0.3.11/lixinger-api/hk/company/fundamental/security.md +173 -0
  194. lixinger_python-0.3.11/lixinger-api/hk/company/hot/capita.md +122 -0
  195. lixinger_python-0.3.11/lixinger-api/hk/company/hot/director_equity_change.md +167 -0
  196. lixinger_python-0.3.11/lixinger-api/hk/company/hot/mm_ah.md +301 -0
  197. lixinger_python-0.3.11/lixinger-api/hk/company/hot/npd.md +112 -0
  198. lixinger_python-0.3.11/lixinger-api/hk/company/hot/rep.md +211 -0
  199. lixinger_python-0.3.11/lixinger-api/hk/company/hot/ss.md +140 -0
  200. lixinger_python-0.3.11/lixinger-api/hk/company/hot/ss_ha.md +147 -0
  201. lixinger_python-0.3.11/lixinger-api/hk/company/hot/tr.md +138 -0
  202. lixinger_python-0.3.11/lixinger-api/hk/company/hot/tr_dri.md +165 -0
  203. lixinger_python-0.3.11/lixinger-api/hk/company/indices.md +116 -0
  204. lixinger_python-0.3.11/lixinger-api/hk/company/industries.md +113 -0
  205. lixinger_python-0.3.11/lixinger-api/hk/company/latest-shareholders.md +133 -0
  206. lixinger_python-0.3.11/lixinger-api/hk/company/mutual-market.md +67 -0
  207. lixinger_python-0.3.11/lixinger-api/hk/company/operation-revenue-constitution.md +229 -0
  208. lixinger_python-0.3.11/lixinger-api/hk/company/profile.md +86 -0
  209. lixinger_python-0.3.11/lixinger-api/hk/company/repurchase.md +132 -0
  210. lixinger_python-0.3.11/lixinger-api/hk/company/shareholders-equity-change.md +253 -0
  211. lixinger_python-0.3.11/lixinger-api/hk/company/short-selling.md +76 -0
  212. lixinger_python-0.3.11/lixinger-api/hk/company/split.md +57 -0
  213. lixinger_python-0.3.11/lixinger-api/hk/company/volatility.md +69 -0
  214. lixinger_python-0.3.11/lixinger-api/hk/company.md +286 -0
  215. lixinger_python-0.3.11/lixinger-api/hk/index/candlestick.md +100 -0
  216. lixinger_python-0.3.11/lixinger-api/hk/index/constituents.md +994 -0
  217. lixinger_python-0.3.11/lixinger-api/hk/index/drawdown.md +79 -0
  218. lixinger_python-0.3.11/lixinger-api/hk/index/fs/hybrid.md +343 -0
  219. lixinger_python-0.3.11/lixinger-api/hk/index/fs/non_financial.md +489 -0
  220. lixinger_python-0.3.11/lixinger-api/hk/index/fundamental.md +179 -0
  221. lixinger_python-0.3.11/lixinger-api/hk/index/hot/cp.md +195 -0
  222. lixinger_python-0.3.11/lixinger-api/hk/index/hot/ic.md +107 -0
  223. lixinger_python-0.3.11/lixinger-api/hk/index/hot/ifet_sni.md +155 -0
  224. lixinger_python-0.3.11/lixinger-api/hk/index/hot/mm_ah.md +185 -0
  225. lixinger_python-0.3.11/lixinger-api/hk/index/mutual-market.md +75 -0
  226. lixinger_python-0.3.11/lixinger-api/hk/index/tracking-fund.md +79 -0
  227. lixinger_python-0.3.11/lixinger-api/hk/index/volatility.md +69 -0
  228. lixinger_python-0.3.11/lixinger-api/hk/index.md +159 -0
  229. lixinger_python-0.3.11/lixinger-api/hk/industry/constituents/hsi.md +2658 -0
  230. lixinger_python-0.3.11/lixinger-api/hk/industry/fs/hsi/hybrid.md +359 -0
  231. lixinger_python-0.3.11/lixinger-api/hk/industry/fs/hsi/non_financial.md +490 -0
  232. lixinger_python-0.3.11/lixinger-api/hk/industry/fundamental/hsi.md +182 -0
  233. lixinger_python-0.3.11/lixinger-api/hk/industry/hot/mm_ah/hsi.md +198 -0
  234. lixinger_python-0.3.11/lixinger-api/hk/industry/mutual-market/hsi.md +75 -0
  235. lixinger_python-0.3.11/lixinger-api/hk/industry.md +147 -0
  236. lixinger_python-0.3.11/lixinger-api/macro/bop.md +958 -0
  237. lixinger_python-0.3.11/lixinger-api/macro/central-bank-balance-sheet.md +307 -0
  238. lixinger_python-0.3.11/lixinger-api/macro/credit-securities-account.md +223 -0
  239. lixinger_python-0.3.11/lixinger-api/macro/crude-oil.md +79 -0
  240. lixinger_python-0.3.11/lixinger-api/macro/currency-exchange-rate.md +149 -0
  241. lixinger_python-0.3.11/lixinger-api/macro/domestic-debt-securities.md +247 -0
  242. lixinger_python-0.3.11/lixinger-api/macro/domestic-trade.md +166 -0
  243. lixinger_python-0.3.11/lixinger-api/macro/energy.md +220 -0
  244. lixinger_python-0.3.11/lixinger-api/macro/foreign-assets.md +158 -0
  245. lixinger_python-0.3.11/lixinger-api/macro/foreign-trade.md +190 -0
  246. lixinger_python-0.3.11/lixinger-api/macro/gdp.md +278 -0
  247. lixinger_python-0.3.11/lixinger-api/macro/gold-price.md +75 -0
  248. lixinger_python-0.3.11/lixinger-api/macro/industrialization.md +220 -0
  249. lixinger_python-0.3.11/lixinger-api/macro/interest-rates.md +152 -0
  250. lixinger_python-0.3.11/lixinger-api/macro/investment-in-fixed-assets.md +117 -0
  251. lixinger_python-0.3.11/lixinger-api/macro/investor.md +87 -0
  252. lixinger_python-0.3.11/lixinger-api/macro/leverage-ratio.md +174 -0
  253. lixinger_python-0.3.11/lixinger-api/macro/money-supply.md +222 -0
  254. lixinger_python-0.3.11/lixinger-api/macro/national-debt.md +101 -0
  255. lixinger_python-0.3.11/lixinger-api/macro/national-finance.md +1040 -0
  256. lixinger_python-0.3.11/lixinger-api/macro/natural-gas.md +78 -0
  257. lixinger_python-0.3.11/lixinger-api/macro/non-ferrous-metals.md +83 -0
  258. lixinger_python-0.3.11/lixinger-api/macro/official-reserve-assets.md +212 -0
  259. lixinger_python-0.3.11/lixinger-api/macro/platinum-price.md +78 -0
  260. lixinger_python-0.3.11/lixinger-api/macro/population.md +172 -0
  261. lixinger_python-0.3.11/lixinger-api/macro/price-index.md +332 -0
  262. lixinger_python-0.3.11/lixinger-api/macro/real-estate.md +262 -0
  263. lixinger_python-0.3.11/lixinger-api/macro/required-reserves.md +63 -0
  264. lixinger_python-0.3.11/lixinger-api/macro/rmb-deposits.md +257 -0
  265. lixinger_python-0.3.11/lixinger-api/macro/rmb-loans.md +281 -0
  266. lixinger_python-0.3.11/lixinger-api/macro/rmbidx.md +49 -0
  267. lixinger_python-0.3.11/lixinger-api/macro/silver-price.md +78 -0
  268. lixinger_python-0.3.11/lixinger-api/macro/social-financing.md +259 -0
  269. lixinger_python-0.3.11/lixinger-api/macro/stamp-duty.md +104 -0
  270. lixinger_python-0.3.11/lixinger-api/macro/traffic-transportation.md +112 -0
  271. lixinger_python-0.3.11/lixinger-api/macro/unemployment-rate.md +98 -0
  272. lixinger_python-0.3.11/lixinger-api/macro/usdx.md +71 -0
  273. lixinger_python-0.3.11/lixinger-api/macro/vix-fear-index.md +155 -0
  274. lixinger_python-0.3.11/lixinger-api/us/index/candlestick.md +96 -0
  275. lixinger_python-0.3.11/lixinger-api/us/index/constituents.md +4522 -0
  276. lixinger_python-0.3.11/lixinger-api/us/index/drawdown.md +79 -0
  277. lixinger_python-0.3.11/lixinger-api/us/index/fs/non_financial.md +377 -0
  278. lixinger_python-0.3.11/lixinger-api/us/index/fundamental.md +175 -0
  279. lixinger_python-0.3.11/lixinger-api/us/index/hot/cp.md +169 -0
  280. lixinger_python-0.3.11/lixinger-api/us/index/hot/ifet_sni.md +140 -0
  281. lixinger_python-0.3.11/lixinger-api/us/index/tracking-fund.md +79 -0
  282. lixinger_python-0.3.11/lixinger-api/us/index/volatility.md +69 -0
  283. lixinger_python-0.3.11/lixinger-api/us/index.md +137 -0
  284. lixinger_python-0.3.11/mypy.ini +28 -0
  285. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/pyproject.toml +1 -1
  286. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/scripts/explore_api.py +1 -1
  287. lixinger_python-0.3.11/tests/test_industry_margin_trading.py +368 -0
  288. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/uv.lock +1 -1
  289. lixinger_python-0.3.9/.claude/settings.local.json +0 -9
  290. lixinger_python-0.3.9/AGENTS.md +0 -354
  291. lixinger_python-0.3.9/CLAUDE.md +0 -256
  292. lixinger_python-0.3.9/DOCS.md +0 -334
  293. lixinger_python-0.3.9/SETUP.md +0 -383
  294. lixinger_python-0.3.9/fund_response.json +0 -1
  295. lixinger_python-0.3.9/mypy.ini +0 -5
  296. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.env.example +0 -0
  297. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.github/copilot-instructions.md +0 -0
  298. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.github/workflows/README.md +0 -0
  299. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.github/workflows/pr-checks.yml +0 -0
  300. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.gitignore +0 -0
  301. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.pre-commit-config.yaml +0 -0
  302. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/.python-version +0 -0
  303. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/CHANGELOG.md +0 -0
  304. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/LICENSE +0 -0
  305. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/MANIFEST.in +0 -0
  306. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/README.md +0 -0
  307. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/codecov.yml +0 -0
  308. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/client.md +0 -0
  309. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/announcement.md +0 -0
  310. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/candlestick.md +0 -0
  311. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/company.md +0 -0
  312. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/dividend.md +0 -0
  313. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/equity_change.md +0 -0
  314. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fs/non_financial.md +0 -0
  315. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fundamental/bank.md +0 -0
  316. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fundamental/insurance.md +0 -0
  317. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fundamental/non_financial.md +0 -0
  318. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fundamental/other_financial.md +0 -0
  319. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/fundamental/security.md +0 -0
  320. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/indices.md +0 -0
  321. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/company/profile.md +0 -0
  322. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/announcement.md +0 -0
  323. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/asset_combination.md +0 -0
  324. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/asset_industry_combination.md +0 -0
  325. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/candlestick.md +0 -0
  326. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/fund.md +0 -0
  327. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/profile.md +0 -0
  328. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/fund/shareholdings.md +0 -0
  329. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/candlestick.md +0 -0
  330. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/constituent_weightings.md +0 -0
  331. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/constituents.md +0 -0
  332. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/drawdown.md +0 -0
  333. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/fundamental.md +0 -0
  334. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/index.md +0 -0
  335. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/index/tracking_fund.md +0 -0
  336. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/api/overview.md +0 -0
  337. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/development/code-style.md +0 -0
  338. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/development/contributing.md +0 -0
  339. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/development/testing.md +0 -0
  340. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/examples/company.md +0 -0
  341. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/examples/fund.md +0 -0
  342. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/examples/index.md +0 -0
  343. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/getting-started/configuration.md +0 -0
  344. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/getting-started/installation.md +0 -0
  345. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/getting-started/quickstart.md +0 -0
  346. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/docs/index.md +0 -0
  347. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/company_example.py +0 -0
  348. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/dividend_example.py +0 -0
  349. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/fs_example.py +0 -0
  350. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/index_constituent_weightings_example.py +0 -0
  351. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/index_constituents_example.py +0 -0
  352. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/index_info_example.py +0 -0
  353. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/examples/index_margin_trading_example.py +0 -0
  354. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/__init__.py +0 -0
  355. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/__init__.py +0 -0
  356. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/__init__.py +0 -0
  357. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/announcement.py +0 -0
  358. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/candlestick.py +0 -0
  359. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/company.py +0 -0
  360. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/dividend.py +0 -0
  361. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/equity_change.py +0 -0
  362. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/__init__.py +0 -0
  363. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/bank.py +0 -0
  364. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/insurance.py +0 -0
  365. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/non_financial.py +0 -0
  366. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/other_financial.py +0 -0
  367. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fs/security.py +0 -0
  368. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/__init__.py +0 -0
  369. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/bank.py +0 -0
  370. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/insurance.py +0 -0
  371. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/non_financial.py +0 -0
  372. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/other_financial.py +0 -0
  373. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/fundamental/security.py +0 -0
  374. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/indices.py +0 -0
  375. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/company/profile.py +0 -0
  376. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/__init__.py +0 -0
  377. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/announcement.py +0 -0
  378. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/asset_combination.py +0 -0
  379. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/asset_industry_combination.py +0 -0
  380. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/candlestick.py +0 -0
  381. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/fund.py +0 -0
  382. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/profile.py +0 -0
  383. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/fund/shareholdings.py +0 -0
  384. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/__init__.py +0 -0
  385. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/candlestick.py +0 -0
  386. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/constituent_weightings.py +0 -0
  387. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/constituents.py +0 -0
  388. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/drawdown.py +0 -0
  389. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fs/__init__.py +0 -0
  390. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fs/bank.py +0 -0
  391. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fs/hybrid.py +0 -0
  392. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fs/non_financial.py +0 -0
  393. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fs/security.py +0 -0
  394. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/fundamental.py +0 -0
  395. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/index.py +0 -0
  396. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/margin_trading.py +0 -0
  397. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/api/cn/index/tracking_fund.py +0 -0
  398. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/config.py +0 -0
  399. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/__init__.py +0 -0
  400. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/__init__.py +0 -0
  401. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/__init__.py +0 -0
  402. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/announcement.py +0 -0
  403. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/candlestick.py +0 -0
  404. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/company.py +0 -0
  405. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/dividend.py +0 -0
  406. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/equity_change.py +0 -0
  407. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/__init__.py +0 -0
  408. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/bank.py +0 -0
  409. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/insurance.py +0 -0
  410. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/non_financial.py +0 -0
  411. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/other_financial.py +0 -0
  412. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fs/security.py +0 -0
  413. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/__init__.py +0 -0
  414. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/bank.py +0 -0
  415. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/insurance.py +0 -0
  416. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/non_financial.py +0 -0
  417. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/other_financial.py +0 -0
  418. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/fundamental/security.py +0 -0
  419. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/company/indices.py +0 -0
  420. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/__init__.py +0 -0
  421. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/announcement.py +0 -0
  422. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/asset_combination.py +0 -0
  423. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/asset_industry_combination.py +0 -0
  424. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/candlestick.py +0 -0
  425. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/fund.py +0 -0
  426. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/profile.py +0 -0
  427. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/fund/shareholdings.py +0 -0
  428. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/__init__.py +0 -0
  429. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/candlestick.py +0 -0
  430. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/constituent_weightings.py +0 -0
  431. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/constituents.py +0 -0
  432. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/drawdown.py +0 -0
  433. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fs/__init__.py +0 -0
  434. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fs/bank.py +0 -0
  435. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fs/hybrid.py +0 -0
  436. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fs/non_financial.py +0 -0
  437. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fs/security.py +0 -0
  438. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/fundamental.py +0 -0
  439. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/index.py +0 -0
  440. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/margin_trading.py +0 -0
  441. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/models/cn/index/tracking_fund.py +0 -0
  442. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/py.typed +0 -0
  443. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/__init__.py +0 -0
  444. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/api.py +0 -0
  445. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/dataframe.py +0 -0
  446. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/dict.py +0 -0
  447. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/lixinger/utils/retry.py +0 -0
  448. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/mkdocs.yml +0 -0
  449. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/scripts/generate_docs.py +0 -0
  450. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/scripts/publish.sh +0 -0
  451. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/api/cn/company/test_announcement.py +0 -0
  452. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/api/cn/company/test_dividend.py +0 -0
  453. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/api/cn/index/test_constituents.py +0 -0
  454. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/conftest.py +0 -0
  455. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_bank_statements.py +0 -0
  456. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_candlestick.py +0 -0
  457. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_client.py +0 -0
  458. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_cn_index_candlestick.py +0 -0
  459. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_cn_index_constituent_weightings.py +0 -0
  460. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_company.py +0 -0
  461. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_company_profile.py +0 -0
  462. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_equity_change.py +0 -0
  463. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund.py +0 -0
  464. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_announcement.py +0 -0
  465. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_asset_combination.py +0 -0
  466. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_asset_industry_combination.py +0 -0
  467. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_candlestick.py +0 -0
  468. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_profile.py +0 -0
  469. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fund_shareholdings.py +0 -0
  470. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fundamental.py +0 -0
  471. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fundamental_bank.py +0 -0
  472. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_fundamental_security.py +0 -0
  473. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index.py +0 -0
  474. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_constituents.py +0 -0
  475. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_drawdown.py +0 -0
  476. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_fs_bank.py +0 -0
  477. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_fs_hybrid.py +0 -0
  478. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_fs_non_financial.py +0 -0
  479. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_fs_security.py +0 -0
  480. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_fundamental.py +0 -0
  481. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_index_margin_trading.py +0 -0
  482. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_indices.py +0 -0
  483. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_insurance_statements.py +0 -0
  484. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_integration.py +0 -0
  485. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_non_financial_statements.py +0 -0
  486. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_other_financial_statements.py +0 -0
  487. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_security_statements.py +0 -0
  488. {lixinger_python-0.3.9 → lixinger_python-0.3.11}/tests/test_tracking_fund.py +0 -0
@@ -0,0 +1,16 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(uv run *)",
5
+ "Bash(git add *)",
6
+ "Bash(git commit -m ' *)",
7
+ "Bash(git commit *)",
8
+ "Bash(python -c ' *)",
9
+ "Bash(git stash *)",
10
+ "Bash(gh run *)",
11
+ "Bash(git tag *)",
12
+ "Bash(git push *)",
13
+ "Bash(uv sync *)"
14
+ ]
15
+ }
16
+ }
@@ -10,15 +10,19 @@ preview = false
10
10
  select = [
11
11
  # Pyflakes (F) - catch common errors
12
12
  "F",
13
- # Pycodestyle (E, W) - PEP 8 style guide
13
+ # Pycodestyle (E, W) - PEP 8 style guide (E722 = bare except)
14
14
  "E",
15
15
  "W",
16
16
  # isort (I) - import sorting
17
17
  "I",
18
- # pep8-naming (N) - naming conventions
18
+ # pep8-naming (N) - PEP 8 naming conventions
19
19
  "N",
20
- # pydocstyle (D) - docstring conventions
20
+ # pydocstyle (D) - docstring conventions (Google style enforced below)
21
21
  "D",
22
+ # flake8-annotations (ANN) - require type hints on function signatures
23
+ "ANN",
24
+ # flake8-blind-except (BLE) - forbid bare / overly broad except
25
+ "BLE",
22
26
  # pyupgrade (UP) - upgrade syntax for newer Python versions
23
27
  "UP",
24
28
  # flake8-bugbear (B) - find bugs and design problems
@@ -43,7 +47,7 @@ select = [
43
47
  "PGH",
44
48
  # Pylint (PL) - additional checks
45
49
  "PL",
46
- # tryceratops (TRY) - exception handling
50
+ # tryceratops (TRY) - exception handling (TRY002 forbids `raise Exception`)
47
51
  "TRY",
48
52
  # flake8-type-checking (TCH) - type checking imports
49
53
  "TCH",
@@ -64,6 +68,10 @@ ignore = [
64
68
  "D104", # Missing docstring in public package
65
69
  "D105", # Missing docstring in magic method
66
70
  "D107", # Missing docstring in __init__
71
+ # Type-hint relaxations: `self`/`cls` and **kwargs need not be annotated
72
+ "ANN101", # Missing type annotation for self
73
+ "ANN102", # Missing type annotation for cls
74
+ "ANN401", # Allow `typing.Any` (SDK returns generic API payloads)
67
75
  # Allow relative imports
68
76
  "TID252",
69
77
  # Allow print statements (useful for debugging)
@@ -99,6 +107,8 @@ ignore = [
99
107
  "S101", # Use of assert
100
108
  "ARG", # Unused arguments
101
109
  "PLR2004", # Magic numbers
110
+ "ANN", # Type annotations not required in tests
111
+ "D", # Docstrings not required in tests
102
112
  ]
103
113
  "data_provider/**/*.py" = [
104
114
  "ERA001", # Remove commented-out code
@@ -111,6 +121,13 @@ ignore = [
111
121
  "app.py" = [
112
122
  "F401", # Unused imports (Flask decorators)
113
123
  ]
124
+ # Examples & scripts: relaxed docstring / annotation requirements
125
+ "examples/**/*.py" = ["ANN", "D"]
126
+ "scripts/**/*.py" = ["ANN", "D"]
127
+
128
+ [lint.pydocstyle]
129
+ # Enforce Google-style docstrings (required for MkDocs / mkdocstrings)
130
+ convention = "google"
114
131
 
115
132
  [lint.isort]
116
133
  known-first-party = ["analyzer", "core", "data_provider"]
@@ -6,7 +6,11 @@
6
6
 
7
7
  ## 🎯 三步添加新 API
8
8
 
9
- ### 1️⃣ 写代码 + Docstrings
9
+ ### 1️⃣ 读文档
10
+
11
+ 所有API文档都放在了 [lixinger-api](./lixinger-api/)下, 首先阅读 [REMINDER.md](./lixinger-api/REMINDER.md) 了解注意事项, 然后阅读具体的 API 文档, 例如 [lixinger-api/cn/company/financials.md](./lixinger-api/cn/company/financials.md) 了解具体的参数和返回值。
12
+
13
+ ### 2️⃣ 写代码 + Docstrings
10
14
 
11
15
  ```python
12
16
  # lixinger/api/cn/company/your_api.py
@@ -49,7 +53,7 @@ class YourAPI(BaseAPI):
49
53
 
50
54
  ---
51
55
 
52
- ### 2️⃣ 生成文档
56
+ ### 3️⃣ 生成文档
53
57
 
54
58
  **方式 A: 自动生成(推荐)**
55
59
 
@@ -79,7 +83,7 @@ EOF
79
83
 
80
84
  ---
81
85
 
82
- ### 3️⃣ 预览 & 部署
86
+ ### 4️⃣ 预览 & 部署
83
87
 
84
88
  ```bash
85
89
  # 本地预览
@@ -167,6 +171,8 @@ async def method_name(param: type) -> return_type:
167
171
  return data
168
172
  ```
169
173
 
174
+ 参考@DOCUMENTATION.md了解项目的文档规范和 Docstring 规范。
175
+
170
176
  ---
171
177
 
172
178
  ## 🧪 测试模板
@@ -191,13 +197,3 @@ async def test_your_api(monkeypatch):
191
197
 
192
198
  assert not df.empty
193
199
  ```
194
-
195
- ---
196
-
197
- ## 🔗 完整文档
198
-
199
- 详细指南请查看:[ADD_NEW_API.md](ADD_NEW_API.md)
200
-
201
- ---
202
-
203
- **重点**:只要写好 docstrings,文档会自动生成!✨
@@ -0,0 +1,61 @@
1
+ # 🏛️ ARCHITECTURE
2
+
3
+ > Lixinger Python SDK 架构简述
4
+
5
+ ---
6
+
7
+ ## 1. 设计原则
8
+
9
+ | 原则 | 说明 |
10
+ | --- | --- |
11
+ | **完全异步** | 所有 API 方法为 `async def`,底层 `httpx.AsyncClient` |
12
+ | **端点驱动目录** | 目录严格镜像 REST 路径:`/cn/company/fs/bank` → `lixinger/api/cn/company/fs/bank.py` |
13
+ | **类型安全** | 全量类型注解 + Pandera DataFrame Schema,`mypy` 严格 |
14
+ | **两种调用形态** | `AsyncLixingerClient`(OO)与 `get_xxx()`(函数式)共享同一底层 |
15
+ | **单一 HTTP 出口** | 端点模块**只能**通过 `BaseAPI._request` 发起请求,重试/限速/鉴权/异常映射集中在一处 |
16
+ | **DataFrame 一体化** | 所有 API 返回 `pandas.DataFrame`,字段自动 `camelCase → snake_case`,经 Pandera 校验 |
17
+ | **API Key 只来自环境变量** | 强制 `LIXINGER_API_KEY`,不可通过参数传入 |
18
+ | **文档即代码** | MkDocs + mkdocstrings 从 docstring 自动生成 API 参考 |
19
+
20
+ ---
21
+
22
+ ## 2. 分层结构
23
+
24
+ ```
25
+ Layer 4 Public Surface lixinger/__init__.py
26
+ └── AsyncLixingerClient / get_xxx() / 异常类
27
+ Layer 3 Endpoint Modules lixinger/api/cn/**/*.py
28
+ └── XxxAPI 类 + get_xxx() 函数 + Namespace 聚合
29
+ Layer 2 BaseAPI lixinger/api/base.py
30
+ └── _request():唯一网络出口(重试 + 限速 + 鉴权 + 解包)
31
+ Layer 1 Infrastructure lixinger/utils/*
32
+ └── httpx / RateLimiter / Retry / Config / Pandera
33
+ ```
34
+
35
+ ---
36
+
37
+ ## 3. 目录结构
38
+
39
+ ```text
40
+ lixinger-python/
41
+ ├── lixinger/ # SDK 主包(client / config / exceptions / __init__)
42
+ │ ├── api/ # Layer 2+3:base.py + 按 REST 路径组织的端点模块
43
+ │ │ └── cn/ # 中国大陆市场
44
+ │ │ ├── company/ # /cn/company/*(含 fs/ 与 fundamental/ 按公司类型细分)
45
+ │ │ ├── index/ # /cn/index/*(含 fs/ 按指数类型细分)
46
+ │ │ ├── industry/ # /cn/industry/*(含 margin_trading/ 按行业分类系统细分)
47
+ │ │ └── fund/ # /cn/fund/*
48
+ │ ├── models/ # Pandera DataFrame Schema(结构镜像 api/)
49
+ │ └── utils/ # rate_limiter / retry / dataframe / dict / api 装饰器
50
+
51
+ ├── tests/ # pytest(含 integration 标记)
52
+ ├── examples/ # 各模块使用示例
53
+ ├── scripts/ # explore_api / generate_docs / publish
54
+ ├── docs/ # MkDocs 源文件
55
+ ├── lixinger-api/ # 官方 API 文档镜像(cn/hk/us/macro)
56
+ ├── mkdocs.yml
57
+ ├── pyproject.toml # uv / ruff / mypy / pytest 配置
58
+ └── .env(.example) # 环境变量
59
+ ```
60
+
61
+ **核心约束**:目录路径必须与 REST 端点一一对应。端点 `/cn/index/fs/hybrid` → `lixinger/api/cn/index/fs/hybrid.py` → `lixinger/models/cn/index/fs/hybrid.py`。
@@ -0,0 +1,116 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ This is a Python SDK for the Lixinger API, which provides financial data services. The project is in early development stages.
8
+
9
+ - **API Documentation**: https://www.lixinger.com/open/api/doc?api-key=cn/company/fundamental/non_financial
10
+ - **API Endpoint**: `https://open.lixinger.com/api`
11
+ - **Python Version**: 3.13+
12
+ - **Package Manager**: uv (fast Python package installer)
13
+ - **Main Dependencies**: httpx (with SOCKS proxy support), python-dotenv, pydantic
14
+
15
+ ## Configuration
16
+
17
+ **IMPORTANT**: The SDK uses environment variables for configuration via dotenv. The API key is ALWAYS loaded from the `.env` file and CANNOT be passed as a parameter.
18
+
19
+ 1. **Setup**: Copy `.env.example` to `.env` and configure:
20
+ ```bash
21
+ cp .env.example .env
22
+ ```
23
+
24
+ 2. **Required Environment Variables**:
25
+ - `LIXINGER_API_KEY` - Your Lixinger API key (REQUIRED - cannot be passed as parameter)
26
+
27
+ 3. **Optional Environment Variables**:
28
+ - `LIXINGER_BASE_URL` - Custom API base URL (default: https://open.lixinger.com/api)
29
+ - `LIXINGER_TIMEOUT` - Request timeout in seconds (default: 30.0)
30
+ - `LIXINGER_MAX_RETRIES` - Maximum retry attempts (default: 3)
31
+ - `LIXINGER_PROXY` - Proxy URL, supports SOCKS (default: None)
32
+ - `LIXINGER_MAX_REQUESTS_PER_MINUTE` - Rate limit (default: 1000)
33
+
34
+ ## Development Commands
35
+
36
+ ### Setup
37
+
38
+ ```bash
39
+ # Install dependencies using uv
40
+ uv sync --dev
41
+
42
+ # Install pre-commit hooks (IMPORTANT!)
43
+ uv run pre-commit install
44
+ ```
45
+
46
+ ### Running
47
+
48
+ ```bash
49
+ # Run the main script
50
+ uv run python main.py
51
+
52
+ # Run examples (make sure .env is configured first)
53
+ uv run python examples/company_example.py
54
+ ```
55
+
56
+ ### Linting
57
+
58
+ ```bash
59
+ # Run Ruff linter
60
+ uv run ruff check .
61
+
62
+ # Auto-fix linting issues
63
+ uv run ruff check . --fix
64
+
65
+ # Format code
66
+ uv run ruff format .
67
+
68
+ # Check formatting (used in CI)
69
+ uv run ruff format --check .
70
+
71
+ # Run Mypy type checker
72
+ uv run mypy lixinger/
73
+ ```
74
+
75
+ ### Testing
76
+
77
+ ```bash
78
+ # Run all tests
79
+ uv run pytest
80
+
81
+ # Run only unit tests (fast, no API key needed)
82
+ uv run pytest -m "not integration"
83
+
84
+ # Run integration tests (requires valid API key in .env)
85
+ uv run pytest -m integration
86
+
87
+ # Run specific test file
88
+ uv run pytest tests/test_client.py
89
+
90
+ # Run with coverage
91
+ uv run pytest --cov=lixinger
92
+
93
+ # Explore API and record real responses
94
+ uv run python scripts/explore_api.py
95
+ ```
96
+
97
+
98
+ ## Hard Constraints
99
+
100
+ - Always using the python via `uv run python`
101
+ - Always using `~=` in `pyproject.toml` for dependencies and always use `uv` for package management.
102
+ - Update [ARCHITECTURE.md](/.ARCHITECTURE.md) if you add / change project structure.
103
+ - Work on one feature at a time
104
+ - Only start the next feature after the current one passes end-to-end verification
105
+ - Don't "also refactor" feature B while implementing feature A
106
+ - All code must pass lint check
107
+ - Run `load_dotenv()` to load environment variables from `.env` file if not already done when running python code.
108
+
109
+
110
+ # References
111
+
112
+ Read @ADD_NEW_API_QUICK.md to quickly add new API endpoints and models.
113
+ Read @PUBLISHING.md to learn how to publish the SDK to PyPI.
114
+ Read @ARCHITECTURE.md to understand the SDK's architecture and design principles.
115
+ Read @.github/workflows/README.md to understand the CI/CD workflow.
116
+ Read @DOCUMENTATION.md to understand how to write docstrings and generate documentation.
@@ -0,0 +1,22 @@
1
+
2
+ ## Documentation
3
+
4
+ This project uses **MkDocs + mkdocstrings** to automatically generate API documentation from docstrings.
5
+
6
+ **Requirements when adding new APIs**:
7
+ - ✅ Write complete Google-style docstrings
8
+ - ✅ Include `Args`, `Returns`, and `Example` sections
9
+ - ✅ Use full type annotations
10
+
11
+ **Quick workflow**:
12
+ ```bash
13
+ # 1. Write code with docstrings
14
+ # 2. Generate docs
15
+ uv run python scripts/generate_docs.py
16
+ # 3. Preview
17
+ uv run mkdocs serve
18
+ ```
19
+
20
+ **Important**:
21
+ - ✅ DO commit: `docs/` (source files), `mkdocs.yml`
22
+ - ❌ DON'T commit: `site/` (auto-generated)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lixinger-python
3
- Version: 0.3.9
3
+ Version: 0.3.11
4
4
  Summary: Python SDK for Lixinger Financial Data API
5
5
  Project-URL: Homepage, https://www.lixinger.com
6
6
  Project-URL: Documentation, https://www.lixinger.com/open/api/doc
@@ -142,91 +142,9 @@ git tag -a v0.1.0 -m "Release version 0.1.0"
142
142
  git push origin v0.1.0
143
143
  ```
144
144
 
145
- ## Using in Another Project
145
+ ### Step 10: Update CHANGELOG.md
146
146
 
147
- After publishing, you can use it in your other project:
148
-
149
- ```bash
150
- # With pip
151
- pip install lixinger-python
152
-
153
- # With uv
154
- uv add lixinger-python
155
-
156
- # Install specific version
157
- uv add lixinger-python==0.1.0
158
- ```
159
-
160
- In your code:
161
-
162
- ```python
163
- from lixinger import LixingerClient
164
-
165
- # Remember to create .env file with LIXINGER_API_KEY
166
- with LixingerClient() as client:
167
- df = client.company.company.get_company(stock_codes=["600036"])
168
- print(df)
169
- ```
170
-
171
- ## Automation with GitHub Actions (Optional)
172
-
173
- You can automate releases with GitHub Actions. Create `.github/workflows/publish.yml`:
174
-
175
- ```yaml
176
- name: Publish to PyPI
177
-
178
- on:
179
- release:
180
- types: [published]
181
-
182
- jobs:
183
- publish:
184
- runs-on: ubuntu-latest
185
- steps:
186
- - uses: actions/checkout@v4
187
-
188
- - name: Set up Python
189
- uses: actions/setup-python@v5
190
- with:
191
- python-version: '3.13'
192
-
193
- - name: Install dependencies
194
- run: |
195
- pip install build twine
196
-
197
- - name: Build package
198
- run: python -m build
199
-
200
- - name: Publish to PyPI
201
- env:
202
- TWINE_USERNAME: __token__
203
- TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
204
- run: twine upload dist/*
205
- ```
206
-
207
- Then add `PYPI_API_TOKEN` to your GitHub repository secrets.
208
-
209
- ## Troubleshooting
210
-
211
- ### Error: Package already exists
212
-
213
- - You cannot re-upload the same version
214
- - Increment the version number in `pyproject.toml`
215
-
216
- ### Error: Invalid credentials
217
-
218
- - Check your `~/.pypirc` file
219
- - Ensure API token is correct and has upload permissions
220
-
221
- ### Error: Package name already taken
222
-
223
- - Choose a different name in `pyproject.toml`
224
- - Try variations like `lixinger-sdk`, `pylixinger`, etc.
225
-
226
- ### Import errors after installation
227
-
228
- - Ensure `lixinger/__init__.py` properly exports all public APIs
229
- - Check that all required files are included in MANIFEST.in
147
+ Update `CHANGELOG.md` with the changes in this release.
230
148
 
231
149
  ## Best Practices
232
150
 
@@ -237,10 +155,4 @@ Then add `PYPI_API_TOKEN` to your GitHub repository secrets.
237
155
  5. **Never commit sensitive files** like `.pypirc` or `.env`
238
156
  6. **Follow semantic versioning** for version numbers
239
157
  7. **Run all tests** before publishing
240
-
241
- ## Additional Resources
242
-
243
- - [Python Packaging User Guide](https://packaging.python.org/)
244
- - [PyPI Help](https://pypi.org/help/)
245
- - [Semantic Versioning](https://semver.org/)
246
- - [uv Documentation](https://docs.astral.sh/uv/)
158
+ 8. **Update CHANGELOG.md** before pushing to PyPI
@@ -15,7 +15,7 @@ async def main():
15
15
  try:
16
16
  df = await client.company.get_profile(stock_codes=["600036"])
17
17
  print(df)
18
- except Exception as e:
18
+ except Exception as e: # noqa: BLE001
19
19
  print(f"Error fetching profile: {e}")
20
20
  print("Note: This example requires a valid LIXINGER_API_KEY in .env")
21
21
  finally:
@@ -26,7 +26,7 @@ async def main():
26
26
  try:
27
27
  df = await get_profile(stock_codes=["000001"])
28
28
  print(df)
29
- except Exception as e:
29
+ except Exception as e: # noqa: BLE001
30
30
  print(f"Error fetching profile: {e}")
31
31
 
32
32
 
@@ -42,6 +42,11 @@ from lixinger.api.cn.index import (
42
42
  from lixinger.api.cn.index import (
43
43
  get_drawdown as get_index_drawdown,
44
44
  )
45
+ from lixinger.api.cn.industry import (
46
+ get_industry_cni_margin_trading,
47
+ get_industry_sw_2021_margin_trading,
48
+ get_industry_sw_margin_trading,
49
+ )
45
50
  from lixinger.client import AsyncLixingerClient
46
51
  from lixinger.config import set_token
47
52
  from lixinger.exceptions import (
@@ -95,4 +100,8 @@ __all__ = [
95
100
  "get_index_bank_statements",
96
101
  "get_index_security_statements",
97
102
  "get_index_hybrid_statements",
103
+ # Industry margin trading
104
+ "get_industry_sw_margin_trading",
105
+ "get_industry_sw_2021_margin_trading",
106
+ "get_industry_cni_margin_trading",
98
107
  ]
@@ -37,7 +37,7 @@ class BaseAPI:
37
37
  client: httpx.AsyncClient | None = None,
38
38
  config: Config | None = None,
39
39
  rate_limiter: AsyncRateLimiter | None = None,
40
- ):
40
+ ) -> None:
41
41
  self._client = client
42
42
  self._config = config or settings
43
43
  self._rate_limiter = rate_limiter or _global_rate_limiter
@@ -37,7 +37,7 @@ class FundamentalNamespace:
37
37
  insurance: InsuranceFundamentalAPI,
38
38
  security: SecurityFundamentalAPI,
39
39
  other_financial: OtherFinancialFundamentalAPI,
40
- ):
40
+ ) -> None:
41
41
  """Initialize the fundamental namespace."""
42
42
  self.non_financial = non_financial
43
43
  self.bank = bank
@@ -65,7 +65,7 @@ class FSNamespace:
65
65
  insurance: InsuranceStatementAPI,
66
66
  security: SecurityStatementAPI,
67
67
  other_financial: OtherFinancialStatementAPI,
68
- ):
68
+ ) -> None:
69
69
  """Initialize the financial statement namespace."""
70
70
  self.non_financial = non_financial
71
71
  self.bank = bank
@@ -121,7 +121,7 @@ class CompanyNamespace:
121
121
  indices: IndicesAPI,
122
122
  dividend: DividendAPI,
123
123
  announcement: AnnouncementAPI,
124
- ):
124
+ ) -> None:
125
125
  """Initialize the company namespace.
126
126
 
127
127
  Args:
@@ -1,5 +1,9 @@
1
1
  """Index namespace for grouping related APIs."""
2
2
 
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
3
7
  from lixinger.api.cn.index.candlestick import IndexCandlestickAPI
4
8
  from lixinger.api.cn.index.constituent_weightings import ConstituentWeightingsAPI
5
9
  from lixinger.api.cn.index.constituents import ConstituentsAPI
@@ -32,7 +36,7 @@ class IndexFSNamespace:
32
36
  bank: IndexBankStatementAPI,
33
37
  security: IndexSecurityStatementAPI,
34
38
  hybrid: IndexHybridStatementAPI,
35
- ):
39
+ ) -> None:
36
40
  """Initialize the index financial statement namespace.
37
41
 
38
42
  Args:
@@ -84,7 +88,7 @@ class IndexNamespace:
84
88
  fs_bank: IndexBankStatementAPI,
85
89
  fs_security: IndexSecurityStatementAPI,
86
90
  fs_hybrid: IndexHybridStatementAPI,
87
- ):
91
+ ) -> None:
88
92
  """Initialize the index namespace.
89
93
 
90
94
  Args:
@@ -118,34 +122,34 @@ class IndexNamespace:
118
122
  )
119
123
 
120
124
  # Convenience aliases for shorter access
121
- def get_index(self, *args, **kwargs):
125
+ async def get_index(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
122
126
  """Alias for index.get_index."""
123
- return self.index.get_index(*args, **kwargs)
127
+ return await self.index.get_index(*args, **kwargs)
124
128
 
125
- def get_constituents(self, *args, **kwargs):
129
+ async def get_constituents(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
126
130
  """Alias for constituents.get_constituents."""
127
- return self.constituents.get_constituents(*args, **kwargs)
131
+ return await self.constituents.get_constituents(*args, **kwargs)
128
132
 
129
- def get_constituent_weightings(self, *args, **kwargs):
133
+ async def get_constituent_weightings(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
130
134
  """Alias for constituent_weightings.get_constituent_weightings."""
131
- return self.constituent_weightings.get_constituent_weightings(*args, **kwargs)
135
+ return await self.constituent_weightings.get_constituent_weightings(*args, **kwargs)
132
136
 
133
- def get_fundamental(self, *args, **kwargs):
137
+ async def get_fundamental(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
134
138
  """Alias for fundamental.get_fundamental."""
135
- return self.fundamental.get_fundamental(*args, **kwargs)
139
+ return await self.fundamental.get_fundamental(*args, **kwargs)
136
140
 
137
- def get_candlestick(self, *args, **kwargs):
141
+ async def get_candlestick(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
138
142
  """Alias for candlestick.get_candlestick."""
139
- return self.candlestick.get_candlestick(*args, **kwargs)
143
+ return await self.candlestick.get_candlestick(*args, **kwargs)
140
144
 
141
- def get_drawdown(self, *args, **kwargs):
145
+ async def get_drawdown(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
142
146
  """Alias for drawdown.get_drawdown."""
143
- return self.drawdown.get_drawdown(*args, **kwargs)
147
+ return await self.drawdown.get_drawdown(*args, **kwargs)
144
148
 
145
- def get_tracking_fund(self, *args, **kwargs):
149
+ async def get_tracking_fund(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
146
150
  """Alias for tracking_fund.get_tracking_fund."""
147
- return self.tracking_fund.get_tracking_fund(*args, **kwargs)
151
+ return await self.tracking_fund.get_tracking_fund(*args, **kwargs)
148
152
 
149
- def get_margin_trading(self, *args, **kwargs):
153
+ async def get_margin_trading(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
150
154
  """Alias for margin_trading.get_margin_trading."""
151
- return self.margin_trading.get_margin_trading(*args, **kwargs)
155
+ return await self.margin_trading.get_margin_trading(*args, **kwargs)
@@ -0,0 +1,21 @@
1
+ """Industry-related APIs."""
2
+
3
+ from lixinger.api.cn.industry.margin_trading import (
4
+ IndustryCniMarginTradingAPI,
5
+ IndustrySw2021MarginTradingAPI,
6
+ IndustrySwMarginTradingAPI,
7
+ get_industry_cni_margin_trading,
8
+ get_industry_sw_2021_margin_trading,
9
+ get_industry_sw_margin_trading,
10
+ )
11
+
12
+ __all__ = [
13
+ # API Classes
14
+ "IndustryCniMarginTradingAPI",
15
+ "IndustrySw2021MarginTradingAPI",
16
+ "IndustrySwMarginTradingAPI",
17
+ # Functional APIs
18
+ "get_industry_cni_margin_trading",
19
+ "get_industry_sw_2021_margin_trading",
20
+ "get_industry_sw_margin_trading",
21
+ ]
@@ -0,0 +1,33 @@
1
+ """Industry margin trading and securities lending APIs.
2
+
3
+ This module provides access to industry margin trading APIs by industry
4
+ classification system:
5
+
6
+ - sw: 申万行业 (Shenwan / SW)
7
+ - sw_2021: 申万2021版行业 (Shenwan 2021)
8
+ - cni: 国证行业 (CNI)
9
+ """
10
+
11
+ from lixinger.api.cn.industry.margin_trading.cni import (
12
+ IndustryCniMarginTradingAPI,
13
+ get_industry_cni_margin_trading,
14
+ )
15
+ from lixinger.api.cn.industry.margin_trading.sw import (
16
+ IndustrySwMarginTradingAPI,
17
+ get_industry_sw_margin_trading,
18
+ )
19
+ from lixinger.api.cn.industry.margin_trading.sw_2021 import (
20
+ IndustrySw2021MarginTradingAPI,
21
+ get_industry_sw_2021_margin_trading,
22
+ )
23
+
24
+ __all__ = [
25
+ # API Classes
26
+ "IndustryCniMarginTradingAPI",
27
+ "IndustrySw2021MarginTradingAPI",
28
+ "IndustrySwMarginTradingAPI",
29
+ # Functional APIs
30
+ "get_industry_cni_margin_trading",
31
+ "get_industry_sw_2021_margin_trading",
32
+ "get_industry_sw_margin_trading",
33
+ ]