lixinger-python 0.3.11__tar.gz → 0.3.13__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 (498) hide show
  1. lixinger_python-0.3.13/.claude/settings.local.json +19 -0
  2. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/ARCHITECTURE.md +6 -5
  3. lixinger_python-0.3.13/CHANGELOG.md +220 -0
  4. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/PKG-INFO +1 -1
  5. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/__init__.py +11 -0
  6. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/base.py +48 -3
  7. lixinger_python-0.3.13/lixinger/api/macro/__init__.py +30 -0
  8. lixinger_python-0.3.13/lixinger/api/macro/namespace.py +62 -0
  9. lixinger_python-0.3.13/lixinger/api/macro/national_debt.py +122 -0
  10. lixinger_python-0.3.13/lixinger/api/macro/rmb_deposits.py +126 -0
  11. lixinger_python-0.3.13/lixinger/api/macro/rmb_loans.py +126 -0
  12. lixinger_python-0.3.13/lixinger/api/macro/social_financing.py +125 -0
  13. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/client.py +27 -0
  14. lixinger_python-0.3.13/lixinger/exceptions.py +38 -0
  15. lixinger_python-0.3.13/lixinger/models/macro/__init__.py +13 -0
  16. lixinger_python-0.3.13/lixinger/models/macro/national_debt.py +20 -0
  17. lixinger_python-0.3.13/lixinger/models/macro/rmb_deposits.py +20 -0
  18. lixinger_python-0.3.13/lixinger/models/macro/rmb_loans.py +20 -0
  19. lixinger_python-0.3.13/lixinger/models/macro/social_financing.py +20 -0
  20. lixinger_python-0.3.13/lixinger/utils/retry.py +52 -0
  21. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/pyproject.toml +1 -1
  22. lixinger_python-0.3.13/tests/test_macro.py +341 -0
  23. lixinger_python-0.3.13/tests/test_retry.py +257 -0
  24. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/uv.lock +1 -1
  25. lixinger_python-0.3.11/.claude/settings.local.json +0 -16
  26. lixinger_python-0.3.11/CHANGELOG.md +0 -95
  27. lixinger_python-0.3.11/lixinger/exceptions.py +0 -22
  28. lixinger_python-0.3.11/lixinger/utils/retry.py +0 -31
  29. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.env.example +0 -0
  30. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.github/copilot-instructions.md +0 -0
  31. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.github/workflows/README.md +0 -0
  32. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.github/workflows/pr-checks.yml +0 -0
  33. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.gitignore +0 -0
  34. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.pre-commit-config.yaml +0 -0
  35. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.python-version +0 -0
  36. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/.ruff.toml +0 -0
  37. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/ADD_NEW_API_QUICK.md +0 -0
  38. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/CLAUDE.md +0 -0
  39. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/DOCUMENTATION.md +0 -0
  40. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/LICENSE +0 -0
  41. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/MANIFEST.in +0 -0
  42. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/PUBLISHING.md +0 -0
  43. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/README.md +0 -0
  44. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/codecov.yml +0 -0
  45. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/client.md +0 -0
  46. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/announcement.md +0 -0
  47. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/candlestick.md +0 -0
  48. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/company.md +0 -0
  49. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/dividend.md +0 -0
  50. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/equity_change.md +0 -0
  51. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fs/non_financial.md +0 -0
  52. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fundamental/bank.md +0 -0
  53. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fundamental/insurance.md +0 -0
  54. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fundamental/non_financial.md +0 -0
  55. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fundamental/other_financial.md +0 -0
  56. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/fundamental/security.md +0 -0
  57. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/indices.md +0 -0
  58. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/company/profile.md +0 -0
  59. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/announcement.md +0 -0
  60. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/asset_combination.md +0 -0
  61. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/asset_industry_combination.md +0 -0
  62. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/candlestick.md +0 -0
  63. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/fund.md +0 -0
  64. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/profile.md +0 -0
  65. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/fund/shareholdings.md +0 -0
  66. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/candlestick.md +0 -0
  67. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/constituent_weightings.md +0 -0
  68. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/constituents.md +0 -0
  69. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/drawdown.md +0 -0
  70. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/fundamental.md +0 -0
  71. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/index.md +0 -0
  72. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/index/tracking_fund.md +0 -0
  73. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/api/overview.md +0 -0
  74. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/development/code-style.md +0 -0
  75. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/development/contributing.md +0 -0
  76. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/development/testing.md +0 -0
  77. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/examples/company.md +0 -0
  78. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/examples/fund.md +0 -0
  79. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/examples/index.md +0 -0
  80. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/getting-started/configuration.md +0 -0
  81. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/getting-started/installation.md +0 -0
  82. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/getting-started/quickstart.md +0 -0
  83. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/docs/index.md +0 -0
  84. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/company_example.py +0 -0
  85. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/company_profile_example.py +0 -0
  86. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/dividend_example.py +0 -0
  87. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/fs_example.py +0 -0
  88. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/index_constituent_weightings_example.py +0 -0
  89. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/index_constituents_example.py +0 -0
  90. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/index_info_example.py +0 -0
  91. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/examples/index_margin_trading_example.py +0 -0
  92. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/__init__.py +0 -0
  93. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/__init__.py +0 -0
  94. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/__init__.py +0 -0
  95. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/announcement.py +0 -0
  96. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/candlestick.py +0 -0
  97. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/company.py +0 -0
  98. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/dividend.py +0 -0
  99. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/equity_change.py +0 -0
  100. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/__init__.py +0 -0
  101. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/bank.py +0 -0
  102. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/insurance.py +0 -0
  103. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/non_financial.py +0 -0
  104. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/other_financial.py +0 -0
  105. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fs/security.py +0 -0
  106. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/__init__.py +0 -0
  107. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/bank.py +0 -0
  108. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/insurance.py +0 -0
  109. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/non_financial.py +0 -0
  110. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/other_financial.py +0 -0
  111. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/fundamental/security.py +0 -0
  112. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/indices.py +0 -0
  113. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/namespace.py +0 -0
  114. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/company/profile.py +0 -0
  115. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/__init__.py +0 -0
  116. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/announcement.py +0 -0
  117. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/asset_combination.py +0 -0
  118. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/asset_industry_combination.py +0 -0
  119. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/candlestick.py +0 -0
  120. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/fund.py +0 -0
  121. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/profile.py +0 -0
  122. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/fund/shareholdings.py +0 -0
  123. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/__init__.py +0 -0
  124. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/candlestick.py +0 -0
  125. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/constituent_weightings.py +0 -0
  126. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/constituents.py +0 -0
  127. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/drawdown.py +0 -0
  128. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fs/__init__.py +0 -0
  129. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fs/bank.py +0 -0
  130. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fs/hybrid.py +0 -0
  131. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fs/non_financial.py +0 -0
  132. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fs/security.py +0 -0
  133. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/fundamental.py +0 -0
  134. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/index.py +0 -0
  135. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/margin_trading.py +0 -0
  136. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/namespace.py +0 -0
  137. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/index/tracking_fund.py +0 -0
  138. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/__init__.py +0 -0
  139. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/margin_trading/__init__.py +0 -0
  140. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/margin_trading/cni.py +0 -0
  141. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/margin_trading/sw.py +0 -0
  142. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/margin_trading/sw_2021.py +0 -0
  143. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/api/cn/industry/namespace.py +0 -0
  144. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/config.py +0 -0
  145. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/__init__.py +0 -0
  146. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/__init__.py +0 -0
  147. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/__init__.py +0 -0
  148. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/announcement.py +0 -0
  149. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/candlestick.py +0 -0
  150. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/company.py +0 -0
  151. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/dividend.py +0 -0
  152. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/equity_change.py +0 -0
  153. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/__init__.py +0 -0
  154. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/bank.py +0 -0
  155. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/insurance.py +0 -0
  156. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/non_financial.py +0 -0
  157. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/other_financial.py +0 -0
  158. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fs/security.py +0 -0
  159. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/__init__.py +0 -0
  160. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/bank.py +0 -0
  161. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/insurance.py +0 -0
  162. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/non_financial.py +0 -0
  163. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/other_financial.py +0 -0
  164. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/fundamental/security.py +0 -0
  165. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/company/indices.py +0 -0
  166. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/__init__.py +0 -0
  167. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/announcement.py +0 -0
  168. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/asset_combination.py +0 -0
  169. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/asset_industry_combination.py +0 -0
  170. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/candlestick.py +0 -0
  171. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/fund.py +0 -0
  172. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/profile.py +0 -0
  173. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/fund/shareholdings.py +0 -0
  174. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/__init__.py +0 -0
  175. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/candlestick.py +0 -0
  176. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/constituent_weightings.py +0 -0
  177. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/constituents.py +0 -0
  178. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/drawdown.py +0 -0
  179. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fs/__init__.py +0 -0
  180. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fs/bank.py +0 -0
  181. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fs/hybrid.py +0 -0
  182. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fs/non_financial.py +0 -0
  183. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fs/security.py +0 -0
  184. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/fundamental.py +0 -0
  185. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/index.py +0 -0
  186. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/margin_trading.py +0 -0
  187. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/index/tracking_fund.py +0 -0
  188. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/industry/__init__.py +0 -0
  189. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/industry/margin_trading/__init__.py +0 -0
  190. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/industry/margin_trading/cni.py +0 -0
  191. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/industry/margin_trading/sw.py +0 -0
  192. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/models/cn/industry/margin_trading/sw_2021.py +0 -0
  193. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/py.typed +0 -0
  194. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/utils/__init__.py +0 -0
  195. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/utils/api.py +0 -0
  196. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/utils/dataframe.py +0 -0
  197. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/utils/dict.py +0 -0
  198. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger/utils/rate_limiter.py +0 -0
  199. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/REMINDER.md +0 -0
  200. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/allotment.md +0 -0
  201. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/announcement.md +0 -0
  202. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/block-deal.md +0 -0
  203. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/candlestick.md +0 -0
  204. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/customers.md +0 -0
  205. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/dividend.md +0 -0
  206. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/equity-change.md +0 -0
  207. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fs/bank.md +0 -0
  208. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fs/insurance.md +0 -0
  209. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fs/non_financial.md +0 -0
  210. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fs/other_financial.md +0 -0
  211. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fs/security.md +0 -0
  212. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fund-collection-shareholders.md +0 -0
  213. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fund-shareholders.md +0 -0
  214. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fundamental/bank.md +0 -0
  215. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fundamental/insurance.md +0 -0
  216. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fundamental/non_financial.md +0 -0
  217. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fundamental/other_financial.md +0 -0
  218. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/fundamental/security.md +0 -0
  219. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/capita.md +0 -0
  220. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/df.md +0 -0
  221. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/elr.md +0 -0
  222. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/esc.md +0 -0
  223. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/mm_ha.md +0 -0
  224. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/mssc.md +0 -0
  225. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/mtasl.md +0 -0
  226. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/npd.md +0 -0
  227. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/ple.md +0 -0
  228. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/shnc.md +0 -0
  229. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/t_a.md +0 -0
  230. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/tr.md +0 -0
  231. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/hot/tr_dri.md +0 -0
  232. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/indices.md +0 -0
  233. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/industries.md +0 -0
  234. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/inquiry.md +0 -0
  235. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/major-shareholders-shares-change.md +0 -0
  236. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/majority-shareholders.md +0 -0
  237. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/margin-trading-and-securities-lending.md +0 -0
  238. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/measures.md +0 -0
  239. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/mutual-market.md +0 -0
  240. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/nolimit-shareholders.md +0 -0
  241. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/operating-data.md +0 -0
  242. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/operation-revenue-constitution.md +0 -0
  243. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/pledge.md +0 -0
  244. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/profile.md +0 -0
  245. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/senior-executive-shares-change.md +0 -0
  246. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/shareholders-num.md +0 -0
  247. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/suppliers.md +0 -0
  248. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/trading-abnormal.md +0 -0
  249. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company/volatility.md +0 -0
  250. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/company.md +0 -0
  251. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/announcement.md +0 -0
  252. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/asset-combination.md +0 -0
  253. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/asset-industry-combination.md +0 -0
  254. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/candlestick.md +0 -0
  255. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/dividend.md +0 -0
  256. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/drawdown.md +0 -0
  257. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/fees.md +0 -0
  258. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/f_as.md +0 -0
  259. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/f_nlacan.md +0 -0
  260. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/fet_s.md +0 -0
  261. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/ff.md +0 -0
  262. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/fp.md +0 -0
  263. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/fpr.md +0 -0
  264. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/hot/fss.md +0 -0
  265. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/manager.md +0 -0
  266. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/net-value-of-dividend-reinvestment.md +0 -0
  267. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/net-value.md +0 -0
  268. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/profile.md +0 -0
  269. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/shareholders-structure.md +0 -0
  270. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/shareholdings.md +0 -0
  271. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/shares.md +0 -0
  272. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/split.md +0 -0
  273. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/total-net-value.md +0 -0
  274. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/turnover-rate.md +0 -0
  275. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund/volatility.md +0 -0
  276. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/asset-scale.md +0 -0
  277. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/fund-list.md +0 -0
  278. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/fund-manager-list.md +0 -0
  279. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/hot/fc_as.md +0 -0
  280. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/hot/fc_asr.md +0 -0
  281. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company/shareholdings.md +0 -0
  282. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-company.md +0 -0
  283. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager/hot/fmi.md +0 -0
  284. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager/hot/fmp.md +0 -0
  285. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager/management-funds.md +0 -0
  286. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager/profit-ratio.md +0 -0
  287. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager/shareholdings.md +0 -0
  288. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund-manager.md +0 -0
  289. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/fund.md +0 -0
  290. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/candlestick.md +0 -0
  291. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/constituent-weightings.md +0 -0
  292. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/constituents.md +0 -0
  293. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/drawdown.md +0 -0
  294. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/fs/bank.md +0 -0
  295. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/fs/hybrid.md +0 -0
  296. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/fs/non_financial.md +0 -0
  297. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/fs/security.md +0 -0
  298. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/fundamental.md +0 -0
  299. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/cp.md +0 -0
  300. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/ic.md +0 -0
  301. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/ifet_sni.md +0 -0
  302. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/mm_ha.md +0 -0
  303. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/mtasl.md +0 -0
  304. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/tr.md +0 -0
  305. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/hot/tr_cp.md +0 -0
  306. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/margin-trading-and-securities-lending.md +0 -0
  307. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/mutual-market.md +0 -0
  308. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/tracking-fund.md +0 -0
  309. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index/volatility.md +0 -0
  310. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/index.md +0 -0
  311. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/constituents/cni.md +0 -0
  312. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/constituents/sw.md +0 -0
  313. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/constituents/sw_2021.md +0 -0
  314. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/cni/bank.md +0 -0
  315. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/cni/hybrid.md +0 -0
  316. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/cni/insurance.md +0 -0
  317. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/cni/non_financial.md +0 -0
  318. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/cni/security.md +0 -0
  319. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw/bank.md +0 -0
  320. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw/hybrid.md +0 -0
  321. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw/insurance.md +0 -0
  322. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw/non_financial.md +0 -0
  323. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw/security.md +0 -0
  324. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw_2021/bank.md +0 -0
  325. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw_2021/hybrid.md +0 -0
  326. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw_2021/insurance.md +0 -0
  327. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw_2021/non_financial.md +0 -0
  328. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fs/sw_2021/security.md +0 -0
  329. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fundamental/cni.md +0 -0
  330. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fundamental/sw.md +0 -0
  331. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/fundamental/sw_2021.md +0 -0
  332. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mm_ha/cni.md +0 -0
  333. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mm_ha/sw.md +0 -0
  334. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mm_ha/sw_2021.md +0 -0
  335. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mtasl/cni.md +0 -0
  336. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mtasl/sw.md +0 -0
  337. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/hot/mtasl/sw_2021.md +0 -0
  338. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/margin-trading-and-securities-lending/cni.md +0 -0
  339. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/margin-trading-and-securities-lending/sw.md +0 -0
  340. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/margin-trading-and-securities-lending/sw_2021.md +0 -0
  341. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/mutual-market/cni.md +0 -0
  342. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/mutual-market/sw.md +0 -0
  343. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry/mutual-market/sw_2021.md +0 -0
  344. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/cn/industry.md +0 -0
  345. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/allotment.md +0 -0
  346. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/announcement.md +0 -0
  347. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/candlestick.md +0 -0
  348. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/dividend.md +0 -0
  349. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/employee.md +0 -0
  350. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/equity-change.md +0 -0
  351. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/bank.md +0 -0
  352. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/insurance.md +0 -0
  353. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/non_financial.md +0 -0
  354. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/other_financial.md +0 -0
  355. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/reit.md +0 -0
  356. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fs/security.md +0 -0
  357. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fund-collection-shareholders.md +0 -0
  358. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fund-shareholders.md +0 -0
  359. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/bank.md +0 -0
  360. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/insurance.md +0 -0
  361. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/non_financial.md +0 -0
  362. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/other_financial.md +0 -0
  363. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/reit.md +0 -0
  364. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/fundamental/security.md +0 -0
  365. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/capita.md +0 -0
  366. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/director_equity_change.md +0 -0
  367. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/mm_ah.md +0 -0
  368. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/npd.md +0 -0
  369. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/rep.md +0 -0
  370. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/ss.md +0 -0
  371. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/ss_ha.md +0 -0
  372. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/tr.md +0 -0
  373. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/hot/tr_dri.md +0 -0
  374. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/indices.md +0 -0
  375. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/industries.md +0 -0
  376. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/latest-shareholders.md +0 -0
  377. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/mutual-market.md +0 -0
  378. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/operation-revenue-constitution.md +0 -0
  379. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/profile.md +0 -0
  380. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/repurchase.md +0 -0
  381. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/shareholders-equity-change.md +0 -0
  382. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/short-selling.md +0 -0
  383. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/split.md +0 -0
  384. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company/volatility.md +0 -0
  385. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/company.md +0 -0
  386. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/candlestick.md +0 -0
  387. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/constituents.md +0 -0
  388. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/drawdown.md +0 -0
  389. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/fs/hybrid.md +0 -0
  390. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/fs/non_financial.md +0 -0
  391. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/fundamental.md +0 -0
  392. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/hot/cp.md +0 -0
  393. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/hot/ic.md +0 -0
  394. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/hot/ifet_sni.md +0 -0
  395. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/hot/mm_ah.md +0 -0
  396. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/mutual-market.md +0 -0
  397. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/tracking-fund.md +0 -0
  398. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index/volatility.md +0 -0
  399. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/index.md +0 -0
  400. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/constituents/hsi.md +0 -0
  401. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/fs/hsi/hybrid.md +0 -0
  402. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/fs/hsi/non_financial.md +0 -0
  403. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/fundamental/hsi.md +0 -0
  404. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/hot/mm_ah/hsi.md +0 -0
  405. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry/mutual-market/hsi.md +0 -0
  406. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/hk/industry.md +0 -0
  407. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/bop.md +0 -0
  408. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/central-bank-balance-sheet.md +0 -0
  409. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/credit-securities-account.md +0 -0
  410. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/crude-oil.md +0 -0
  411. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/currency-exchange-rate.md +0 -0
  412. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/domestic-debt-securities.md +0 -0
  413. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/domestic-trade.md +0 -0
  414. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/energy.md +0 -0
  415. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/foreign-assets.md +0 -0
  416. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/foreign-trade.md +0 -0
  417. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/gdp.md +0 -0
  418. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/gold-price.md +0 -0
  419. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/industrialization.md +0 -0
  420. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/interest-rates.md +0 -0
  421. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/investment-in-fixed-assets.md +0 -0
  422. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/investor.md +0 -0
  423. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/leverage-ratio.md +0 -0
  424. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/money-supply.md +0 -0
  425. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/national-debt.md +0 -0
  426. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/national-finance.md +0 -0
  427. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/natural-gas.md +0 -0
  428. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/non-ferrous-metals.md +0 -0
  429. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/official-reserve-assets.md +0 -0
  430. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/platinum-price.md +0 -0
  431. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/population.md +0 -0
  432. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/price-index.md +0 -0
  433. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/real-estate.md +0 -0
  434. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/required-reserves.md +0 -0
  435. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/rmb-deposits.md +0 -0
  436. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/rmb-loans.md +0 -0
  437. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/rmbidx.md +0 -0
  438. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/silver-price.md +0 -0
  439. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/social-financing.md +0 -0
  440. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/stamp-duty.md +0 -0
  441. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/traffic-transportation.md +0 -0
  442. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/unemployment-rate.md +0 -0
  443. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/usdx.md +0 -0
  444. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/macro/vix-fear-index.md +0 -0
  445. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/candlestick.md +0 -0
  446. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/constituents.md +0 -0
  447. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/drawdown.md +0 -0
  448. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/fs/non_financial.md +0 -0
  449. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/fundamental.md +0 -0
  450. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/hot/cp.md +0 -0
  451. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/hot/ifet_sni.md +0 -0
  452. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/tracking-fund.md +0 -0
  453. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index/volatility.md +0 -0
  454. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/lixinger-api/us/index.md +0 -0
  455. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/mkdocs.yml +0 -0
  456. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/mypy.ini +0 -0
  457. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/scripts/explore_api.py +0 -0
  458. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/scripts/generate_docs.py +0 -0
  459. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/scripts/publish.sh +0 -0
  460. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/api/cn/company/test_announcement.py +0 -0
  461. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/api/cn/company/test_dividend.py +0 -0
  462. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/api/cn/index/test_constituents.py +0 -0
  463. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/conftest.py +0 -0
  464. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_bank_statements.py +0 -0
  465. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_candlestick.py +0 -0
  466. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_client.py +0 -0
  467. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_cn_index_candlestick.py +0 -0
  468. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_cn_index_constituent_weightings.py +0 -0
  469. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_company.py +0 -0
  470. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_company_profile.py +0 -0
  471. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_equity_change.py +0 -0
  472. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund.py +0 -0
  473. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_announcement.py +0 -0
  474. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_asset_combination.py +0 -0
  475. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_asset_industry_combination.py +0 -0
  476. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_candlestick.py +0 -0
  477. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_profile.py +0 -0
  478. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fund_shareholdings.py +0 -0
  479. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fundamental.py +0 -0
  480. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fundamental_bank.py +0 -0
  481. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_fundamental_security.py +0 -0
  482. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index.py +0 -0
  483. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_constituents.py +0 -0
  484. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_drawdown.py +0 -0
  485. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_fs_bank.py +0 -0
  486. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_fs_hybrid.py +0 -0
  487. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_fs_non_financial.py +0 -0
  488. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_fs_security.py +0 -0
  489. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_fundamental.py +0 -0
  490. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_index_margin_trading.py +0 -0
  491. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_indices.py +0 -0
  492. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_industry_margin_trading.py +0 -0
  493. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_insurance_statements.py +0 -0
  494. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_integration.py +0 -0
  495. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_non_financial_statements.py +0 -0
  496. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_other_financial_statements.py +0 -0
  497. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_security_statements.py +0 -0
  498. {lixinger_python-0.3.11 → lixinger_python-0.3.13}/tests/test_tracking_fund.py +0 -0
@@ -0,0 +1,19 @@
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
+ "Bash(curl -s https://pypi.org/pypi/lixinger-python/0.3.11/json)",
15
+ "Bash(python3 -c \"import sys, json; d = json.load\\(sys.stdin\\); print\\('Name:', d['info']['name']\\); print\\('Version:', d['info']['version']\\); print\\('Files:', len\\(d['urls']\\)\\)\")",
16
+ "Bash(curl -s https://pypi.org/pypi/lixinger-python/0.3.12/json)"
17
+ ]
18
+ }
19
+ }
@@ -40,11 +40,12 @@ Layer 1 Infrastructure lixinger/utils/*
40
40
  lixinger-python/
41
41
  ├── lixinger/ # SDK 主包(client / config / exceptions / __init__)
42
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/*
43
+ │ │ ├── cn/ # 中国大陆市场
44
+ │ │├── company/ # /cn/company/*(含 fs/ 与 fundamental/ 按公司类型细分)
45
+ │ │├── index/ # /cn/index/*(含 fs/ 按指数类型细分)
46
+ │ │├── industry/ # /cn/industry/*(含 margin_trading/ 按行业分类系统细分)
47
+ │ │└── fund/ # /cn/fund/*
48
+ │ │ └── macro/ # /macro/*(宏观数据:national_debt / rmb_deposits / rmb_loans / social_financing / ...)
48
49
  │ ├── models/ # Pandera DataFrame Schema(结构镜像 api/)
49
50
  │ └── utils/ # rate_limiter / retry / dataframe / dict / api 装饰器
50
51
 
@@ -0,0 +1,220 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Planned
11
+ - Add support for US stock market APIs
12
+ - Add caching mechanism for API responses
13
+
14
+ ## [0.3.13] - 2026-07-05
15
+
16
+ ### Fixed
17
+ - `AuthenticationError` (401) 和 `ValidationError` 不再被重试. 之前会被
18
+ 重试装饰器兜底 catch 3 次, 白白浪费 ~7 秒和 3 次配额.
19
+ - 429 响应现在会尊重服务端返回的 `Retry-After` header, 按 header 指定的
20
+ 时长退避(同时支持 RFC 7231 的 `delta-seconds` 和 `HTTP-date` 两种格式);
21
+ header 缺失时保持原有的 1/2/4 秒指数退避.
22
+
23
+ ### Changed
24
+ - `async_retry_on_failure` 新增 `no_retry_on: tuple[type[Exception], ...]`
25
+ 参数, 命中即立即抛出.
26
+ - `RateLimitError` 新增 `retry_after: float | None` 属性; 若异常对象带
27
+ `retry_after` 属性, 重试装饰器会用它替代默认的指数退避.
28
+
29
+ ## [0.3.12] - 2026-07-05
30
+
31
+ ### Added
32
+ - 宏观数据 API 家族 (`/macro/*`) —— 新增顶级 `client.macro` namespace:
33
+ - `POST /macro/national-debt` — 国债收益率 (cn / us, 三月~三十年期), flat metrics —
34
+ `client.macro.national_debt.get_national_debt()` / `get_national_debt()`
35
+ - `POST /macro/rmb-deposits` — 人民币存款 (含住户/非金融企业/机关/财政等分项;
36
+ 支持 y/m 粒度与 t/c/y2y/c2c 等表达式), 嵌套 metrics 自动 flatten 为 `y.rmb_d.t` 列 —
37
+ `client.macro.rmb_deposits.get_rmb_deposits()` / `get_rmb_deposits()`
38
+ - `POST /macro/rmb-loans` — 人民币贷款 (含住户/企事业单位/票据融资等分项) —
39
+ `client.macro.rmb_loans.get_rmb_loans()` / `get_rmb_loans()`
40
+ - `POST /macro/social-financing` — 社会融资规模 (含 rmbl/fl/el/tl/ubc/nf_cb/gb 等分项) —
41
+ `client.macro.social_financing.get_social_financing()` / `get_social_financing()`
42
+
43
+ ## [0.3.11] - 2026-07-05
44
+
45
+ ### Added
46
+ - 行业融资融券 API (`/cn/industry/margin-trading-and-securities-lending/*`)
47
+ covering three industry classification systems:
48
+ - `sw`: 申万行业 — `client.cn_industry.margin_trading.sw.get_margin_trading()`
49
+ / `get_industry_sw_margin_trading()`
50
+ - `sw_2021`: 申万2021版行业 — `client.cn_industry.margin_trading.sw_2021.get_margin_trading()`
51
+ / `get_industry_sw_2021_margin_trading()`
52
+ - `cni`: 国证行业 — `client.cn_industry.margin_trading.cni.get_margin_trading()`
53
+ / `get_industry_cni_margin_trading()`
54
+ - `IndustryNamespace` grouped under `client.cn_industry` (with `client.industry` alias)
55
+
56
+ ## [0.3.10] - 2026-07-05
57
+
58
+ ### Fixed
59
+ - Add missing return / argument type annotations to satisfy ANN rules
60
+
61
+ ### Changed
62
+ - Rewrite architecture / dev docs and enforce style via lint
63
+
64
+ ## [0.3.9] - 2026-07-03
65
+
66
+ ### Added
67
+ - 指数融资融券 API (`/cn/index/margin-trading-and-securities-lending`) —
68
+ `client.cn_index.margin_trading.get_margin_trading()` /
69
+ `get_index_margin_trading()`
70
+
71
+ ## [0.3.8] - 2026-06-29
72
+
73
+ ### Added
74
+ - 大陆公司财务报表 (fs) 数据 by company type:
75
+ bank / insurance / security / other_financial
76
+ (`/cn/company/fs/{bank,insurance,security,other_financial}`)
77
+
78
+ ## [0.3.7] - 2026-06-28
79
+
80
+ ### Added
81
+ - 大陆指数财务报表 (fs) 数据 by index type:
82
+ non_financial / bank / security / hybrid
83
+ (`/cn/index/fs/{non_financial,bank,security,hybrid}`)
84
+
85
+ ## [0.3.6] - 2026-06-13
86
+
87
+ ### Fixed
88
+ - Allow null / missing `types` field in announcement schema
89
+
90
+ ## [0.3.5] - 2026-04-17
91
+
92
+ ### Changed
93
+ - Pin strict version dependencies in `pyproject.toml`
94
+
95
+ ## [0.3.4] - 2026-04-17
96
+
97
+ ### Changed
98
+ - Update candlestick API
99
+
100
+ ## [0.3.3] - 2026-04-01
101
+
102
+ ### Added
103
+ - Append `status` field to dividend response
104
+
105
+ ## [0.3.2] - 2026-03-17
106
+
107
+ ### Fixed
108
+ - Fix index info API
109
+ - Fix constituent_weighting API
110
+ - Fix index constituents API
111
+
112
+ ## [0.3.1] - 2026-03-10
113
+
114
+ ### Fixed
115
+ - Fix dividend API
116
+
117
+ ## [0.3.0] - 2026-02-26
118
+
119
+ ### Added
120
+ - Implement `/cn/company/fundamental/security` API endpoint
121
+ - Implement `/cn/company/fundamental/bank` API endpoint
122
+ - Documentation updates
123
+
124
+ ## [0.2.0] - 2026-02-26
125
+
126
+ ### ⚠️ BREAKING CHANGES
127
+
128
+ This release completely migrates the SDK to async/await. All existing code must be updated.
129
+
130
+ **Migration Guide:**
131
+
132
+ ```python
133
+ # v0.1.x (old - blocking)
134
+ from lixinger import LixingerClient
135
+
136
+ with LixingerClient() as client:
137
+ df = client.company.company.get_company(["000001"])
138
+
139
+ # v0.2.0 (new - async)
140
+ import asyncio
141
+ from lixinger import AsyncLixingerClient
142
+
143
+ async def main():
144
+ async with AsyncLixingerClient() as client:
145
+ df = await client.company.company.get_company(["000001"])
146
+
147
+ asyncio.run(main())
148
+ ```
149
+
150
+ ### Changed
151
+ - **BREAKING**: `LixingerClient` renamed to `AsyncLixingerClient`
152
+ - **BREAKING**: All API methods now return coroutines and must be awaited
153
+ - **BREAKING**: Context manager now requires `async with` instead of `with`
154
+ - **BREAKING**: `client.close()` is now async and must be awaited
155
+ - **BREAKING**: All functional APIs (e.g., `get_company()`) are now async
156
+ - Replaced `httpx.Client` with `httpx.AsyncClient`
157
+ - Replaced `time.sleep` with `asyncio.sleep` in rate limiter and retry logic
158
+
159
+ ### Added
160
+ - ✨ Full async/await support throughout the SDK
161
+ - ✨ Concurrent request capability - query multiple stocks in parallel
162
+ - ✨ Native Jupyter Notebook support (top-level await)
163
+ - ✨ Perfect integration with AI Agent frameworks (LangChain, LlamaIndex)
164
+ - ✨ Compatible with async web frameworks (FastAPI, Sanic, Quart)
165
+
166
+ ### Benefits
167
+ - Non-blocking I/O for better performance in async contexts
168
+ - Ability to query multiple stocks concurrently using `asyncio.gather()`
169
+ - Seamless integration with modern Python async ecosystem
170
+ - Ideal for AI agents that need to fetch financial data without blocking
171
+
172
+ ## [0.1.0] - 2026-02-24
173
+
174
+ ### Added
175
+ - Initial release of lixinger-python SDK
176
+ - Support for company fundamental data APIs (`/cn/company/fundamental/*`)
177
+ - Support for company profile data API (`/cn/company`)
178
+ - Support for company candlestick (OHLC) data API (`/cn/company/fs/non_financial`)
179
+ - Support for index data APIs (`/cn/index`)
180
+ - Environment-based configuration via `.env` file
181
+ - Rate limiting (1000 requests/minute)
182
+ - Automatic retry mechanism for failed requests
183
+ - SOCKS proxy support
184
+ - Full type hints and mypy support
185
+ - Comprehensive test suite with pytest
186
+ - Auto-generated documentation with MkDocs
187
+ - Pre-commit hooks for code quality
188
+
189
+ ### Features
190
+ - **LixingerClient**: Main client class with context manager support
191
+ - **Data Models**: Pydantic models for type-safe API responses
192
+ - **DataFrame Support**: All API responses return pandas DataFrame
193
+ - **Error Handling**: Custom exception classes for better error handling
194
+ - **Rate Limiting**: Built-in rate limiter to prevent API throttling
195
+ - **Retry Logic**: Automatic retry with exponential backoff
196
+
197
+ ### Developer Tools
198
+ - Ruff for linting and formatting
199
+ - Mypy for type checking
200
+ - Pytest for testing
201
+ - Pre-commit hooks
202
+ - MkDocs for documentation
203
+
204
+ [unreleased]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.13...HEAD
205
+ [0.3.13]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.12...v0.3.13
206
+ [0.3.12]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.11...v0.3.12
207
+ [0.3.11]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.10...v0.3.11
208
+ [0.3.10]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.9...v0.3.10
209
+ [0.3.9]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.8...v0.3.9
210
+ [0.3.8]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.7...v0.3.8
211
+ [0.3.7]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.6...v0.3.7
212
+ [0.3.6]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.5...v0.3.6
213
+ [0.3.5]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.4...v0.3.5
214
+ [0.3.4]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.3...v0.3.4
215
+ [0.3.3]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.2...v0.3.3
216
+ [0.3.2]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.1...v0.3.2
217
+ [0.3.1]: https://github.com/TedaLIEz/lixinger-python/compare/v0.3.0...v0.3.1
218
+ [0.3.0]: https://github.com/TedaLIEz/lixinger-python/compare/v0.2.0...v0.3.0
219
+ [0.2.0]: https://github.com/TedaLIEz/lixinger-python/compare/v0.1.0...v0.2.0
220
+ [0.1.0]: https://github.com/TedaLIEz/lixinger-python/releases/tag/v0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lixinger-python
3
- Version: 0.3.11
3
+ Version: 0.3.13
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
@@ -47,6 +47,12 @@ from lixinger.api.cn.industry import (
47
47
  get_industry_sw_2021_margin_trading,
48
48
  get_industry_sw_margin_trading,
49
49
  )
50
+ from lixinger.api.macro import (
51
+ get_national_debt,
52
+ get_rmb_deposits,
53
+ get_rmb_loans,
54
+ get_social_financing,
55
+ )
50
56
  from lixinger.client import AsyncLixingerClient
51
57
  from lixinger.config import set_token
52
58
  from lixinger.exceptions import (
@@ -104,4 +110,9 @@ __all__ = [
104
110
  "get_industry_sw_margin_trading",
105
111
  "get_industry_sw_2021_margin_trading",
106
112
  "get_industry_cni_margin_trading",
113
+ # Macro
114
+ "get_national_debt",
115
+ "get_rmb_deposits",
116
+ "get_rmb_loans",
117
+ "get_social_financing",
107
118
  ]
@@ -1,9 +1,11 @@
1
+ from datetime import UTC, datetime
2
+ from email.utils import parsedate_to_datetime
1
3
  from typing import Any
2
4
 
3
5
  import httpx
4
6
 
5
7
  from lixinger.config import Config, settings
6
- from lixinger.exceptions import APIError, AuthenticationError, RateLimitError
8
+ from lixinger.exceptions import APIError, AuthenticationError, RateLimitError, ValidationError
7
9
  from lixinger.utils.rate_limiter import AsyncRateLimiter
8
10
  from lixinger.utils.retry import async_retry_on_failure
9
11
 
@@ -29,6 +31,39 @@ def get_global_client() -> httpx.AsyncClient:
29
31
  return _global_http_client
30
32
 
31
33
 
34
+ def _parse_retry_after(header_value: str | None) -> float | None:
35
+ """Parse a Retry-After header into seconds.
36
+
37
+ Accepts both formats defined by RFC 7231 §7.1.3:
38
+ - ``delta-seconds`` (e.g. ``"120"``)
39
+ - ``HTTP-date`` (e.g. ``"Wed, 21 Oct 2015 07:28:00 GMT"``)
40
+
41
+ Returns ``None`` when the header is missing or unparseable so the caller
42
+ can fall back to its default backoff.
43
+ """
44
+ if not header_value:
45
+ return None
46
+ value = header_value.strip()
47
+ # Try delta-seconds first — the common case.
48
+ try:
49
+ seconds = float(value)
50
+ except ValueError:
51
+ pass
52
+ else:
53
+ return seconds if seconds >= 0 else None
54
+ # Fall back to HTTP-date.
55
+ try:
56
+ target = parsedate_to_datetime(value)
57
+ except (TypeError, ValueError):
58
+ return None
59
+ if target.tzinfo is None:
60
+ # RFC 7231 HTTP-date is always GMT, so treat naive dates as UTC.
61
+ target = target.replace(tzinfo=UTC)
62
+ now = datetime.now(tz=target.tzinfo)
63
+ delta = (target - now).total_seconds()
64
+ return max(delta, 0.0)
65
+
66
+
32
67
  class BaseAPI:
33
68
  """Base class for API endpoint groups."""
34
69
 
@@ -42,7 +77,12 @@ class BaseAPI:
42
77
  self._config = config or settings
43
78
  self._rate_limiter = rate_limiter or _global_rate_limiter
44
79
 
45
- @async_retry_on_failure(max_retries=3, backoff=1.0)
80
+ @async_retry_on_failure(
81
+ max_retries=3,
82
+ backoff=1.0,
83
+ # Do NOT retry non-transient errors even though they inherit from Exception.
84
+ no_retry_on=(AuthenticationError, ValidationError),
85
+ )
46
86
  async def _request(
47
87
  self,
48
88
  method: str,
@@ -72,7 +112,12 @@ class BaseAPI:
72
112
  )
73
113
 
74
114
  if response.status_code == 429:
75
- raise RateLimitError("Rate limit exceeded", status_code=429)
115
+ retry_after = _parse_retry_after(response.headers.get("Retry-After"))
116
+ raise RateLimitError(
117
+ "Rate limit exceeded",
118
+ status_code=429,
119
+ retry_after=retry_after,
120
+ )
76
121
  if response.status_code == 401:
77
122
  raise AuthenticationError("Authentication failed", status_code=401)
78
123
  if response.status_code != 200:
@@ -0,0 +1,30 @@
1
+ """Macro APIs.
2
+
3
+ This module provides access to macroeconomic data APIs:
4
+
5
+ - national_debt: 国债收益率 (/macro/national-debt)
6
+ - rmb_deposits: 人民币存款 (/macro/rmb-deposits)
7
+ - rmb_loans: 人民币贷款 (/macro/rmb-loans)
8
+ - social_financing: 社会融资规模 (/macro/social-financing)
9
+ """
10
+
11
+ from lixinger.api.macro.national_debt import NationalDebtAPI, get_national_debt
12
+ from lixinger.api.macro.rmb_deposits import RmbDepositsAPI, get_rmb_deposits
13
+ from lixinger.api.macro.rmb_loans import RmbLoansAPI, get_rmb_loans
14
+ from lixinger.api.macro.social_financing import (
15
+ SocialFinancingAPI,
16
+ get_social_financing,
17
+ )
18
+
19
+ __all__ = [
20
+ # API Classes
21
+ "NationalDebtAPI",
22
+ "RmbDepositsAPI",
23
+ "RmbLoansAPI",
24
+ "SocialFinancingAPI",
25
+ # Functional APIs
26
+ "get_national_debt",
27
+ "get_rmb_deposits",
28
+ "get_rmb_loans",
29
+ "get_social_financing",
30
+ ]
@@ -0,0 +1,62 @@
1
+ """Macro namespace for grouping related APIs."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.macro.national_debt import NationalDebtAPI
8
+ from lixinger.api.macro.rmb_deposits import RmbDepositsAPI
9
+ from lixinger.api.macro.rmb_loans import RmbLoansAPI
10
+ from lixinger.api.macro.social_financing import SocialFinancingAPI
11
+
12
+
13
+ class MacroNamespace:
14
+ """Namespace for macroeconomic APIs.
15
+
16
+ This class groups all macro APIs under a single namespace.
17
+ Access APIs via their specific attributes:
18
+
19
+ - national_debt: 国债收益率 API
20
+ - rmb_deposits: 人民币存款 API
21
+ - rmb_loans: 人民币贷款 API
22
+ - social_financing: 社会融资 API
23
+
24
+ """
25
+
26
+ def __init__(
27
+ self,
28
+ national_debt: NationalDebtAPI,
29
+ rmb_deposits: RmbDepositsAPI,
30
+ rmb_loans: RmbLoansAPI,
31
+ social_financing: SocialFinancingAPI,
32
+ ) -> None:
33
+ """Initialize the macro namespace.
34
+
35
+ Args:
36
+ national_debt: 国债 API
37
+ rmb_deposits: 人民币存款 API
38
+ rmb_loans: 人民币贷款 API
39
+ social_financing: 社会融资 API
40
+
41
+ """
42
+ self.national_debt = national_debt
43
+ self.rmb_deposits = rmb_deposits
44
+ self.rmb_loans = rmb_loans
45
+ self.social_financing = social_financing
46
+
47
+ # Convenience aliases for shorter access
48
+ async def get_national_debt(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
49
+ """Alias for national_debt.get_national_debt."""
50
+ return await self.national_debt.get_national_debt(*args, **kwargs)
51
+
52
+ async def get_rmb_deposits(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
53
+ """Alias for rmb_deposits.get_rmb_deposits."""
54
+ return await self.rmb_deposits.get_rmb_deposits(*args, **kwargs)
55
+
56
+ async def get_rmb_loans(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
57
+ """Alias for rmb_loans.get_rmb_loans."""
58
+ return await self.rmb_loans.get_rmb_loans(*args, **kwargs)
59
+
60
+ async def get_social_financing(self, *args: Any, **kwargs: Any) -> pd.DataFrame:
61
+ """Alias for social_financing.get_social_financing."""
62
+ return await self.social_financing.get_social_financing(*args, **kwargs)
@@ -0,0 +1,122 @@
1
+ """国债 API."""
2
+
3
+ from typing import Any
4
+
5
+ import pandas as pd
6
+
7
+ from lixinger.api.base import BaseAPI
8
+ from lixinger.models.macro.national_debt import NationalDebt
9
+ from lixinger.utils.api import api
10
+ from lixinger.utils.dataframe import get_response_df
11
+
12
+
13
+ class NationalDebtAPI(BaseAPI):
14
+ """国债 API."""
15
+
16
+ async def get_national_debt(
17
+ self,
18
+ area_code: str,
19
+ start_date: str,
20
+ end_date: str,
21
+ metrics_list: list[str],
22
+ limit: int | None = None,
23
+ ) -> pd.DataFrame:
24
+ """获取国债数据.
25
+
26
+ 获取国债收益率数据. 可按时间范围获取大陆和美国各期限国债的收益率数据,
27
+ 包括三月期/六月期/一年期/二年期/三年期/五年期/七年期/十年期/二十年期/
28
+ 三十年期收益率. 当用户想了解无风险利率水平或利率期限结构时, 调用此接口.
29
+
30
+ API Endpoint: /macro/national-debt
31
+ API Method: POST
32
+ API Doc: https://www.lixinger.com/open/api/doc?api-key=macro/national-debt
33
+
34
+ Args:
35
+ area_code: 地区代码, ``cn`` 或 ``us``.
36
+ start_date: 信息起始时间 (YYYY-MM-DD, 北京时间), 开始和结束的时间间隔不超过10年.
37
+ end_date: 信息结束时间 (YYYY-MM-DD, 北京时间).
38
+ metrics_list: 指标列表, 例如 ``["tcm_m3", "tcm_y10"]``.
39
+ 支持的指标: ``tcm_m3``, ``tcm_m6``, ``tcm_y1``, ``tcm_y2``, ``tcm_y3``,
40
+ ``tcm_y5``, ``tcm_y7``, ``tcm_y10``, ``tcm_y20``, ``tcm_y30``.
41
+ limit: 返回最近数据的数量.
42
+
43
+ Returns:
44
+ DataFrame 包含以下列:
45
+
46
+ - date: 数据时间
47
+ - area_code: 地区代码
48
+ - 各请求指标 (如 tcm_m3, tcm_y10 等)
49
+
50
+ Example:
51
+ 获取大陆三月期国债收益率::
52
+
53
+ from lixinger import AsyncLixingerClient
54
+
55
+ async with AsyncLixingerClient() as client:
56
+ df = await client.macro.national_debt.get_national_debt(
57
+ area_code="cn",
58
+ start_date="2025-06-13",
59
+ end_date="2026-06-13",
60
+ metrics_list=["tcm_m3"],
61
+ )
62
+ print(df)
63
+
64
+ """
65
+ payload: dict[str, Any] = {
66
+ "areaCode": area_code,
67
+ "startDate": start_date,
68
+ "endDate": end_date,
69
+ "metricsList": metrics_list,
70
+ }
71
+ if limit is not None:
72
+ payload["limit"] = limit
73
+
74
+ data = await self._request("POST", "/macro/national-debt", json=payload)
75
+ return get_response_df(data, NationalDebt)
76
+
77
+
78
+ # Functional API instance
79
+ _api_instance = NationalDebtAPI()
80
+
81
+
82
+ @api
83
+ async def get_national_debt(
84
+ area_code: str,
85
+ start_date: str,
86
+ end_date: str,
87
+ metrics_list: list[str],
88
+ limit: int | None = None,
89
+ ) -> pd.DataFrame:
90
+ """获取国债数据.
91
+
92
+ Args:
93
+ area_code: 地区代码, ``cn`` 或 ``us``.
94
+ start_date: 信息起始时间 (YYYY-MM-DD).
95
+ end_date: 信息结束时间 (YYYY-MM-DD).
96
+ metrics_list: 指标列表, 例如 ``["tcm_m3", "tcm_y10"]``.
97
+ limit: 返回最近数据的数量.
98
+
99
+ Returns:
100
+ DataFrame 包含国债收益率数据.
101
+
102
+ Example:
103
+ 获取大陆三月期国债收益率::
104
+
105
+ from lixinger import get_national_debt
106
+
107
+ df = await get_national_debt(
108
+ area_code="cn",
109
+ start_date="2025-06-13",
110
+ end_date="2026-06-13",
111
+ metrics_list=["tcm_m3"],
112
+ )
113
+ print(df)
114
+
115
+ """
116
+ return await _api_instance.get_national_debt(
117
+ area_code=area_code,
118
+ start_date=start_date,
119
+ end_date=end_date,
120
+ metrics_list=metrics_list,
121
+ limit=limit,
122
+ )