lixinger-python 0.3.3__tar.gz → 0.3.5__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.
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.claude/settings.local.json +4 -1
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/PKG-INFO +6 -6
- lixinger_python-0.3.5/lixinger/api/cn/company/candlestick.py +113 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/pyproject.toml +6 -6
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_candlestick.py +3 -6
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_integration.py +0 -1
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/uv.lock +6 -6
- lixinger_python-0.3.3/lixinger/api/cn/company/candlestick.py +0 -76
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.env.example +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.github/copilot-instructions.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.github/workflows/README.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.github/workflows/pr-checks.yml +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.gitignore +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.pre-commit-config.yaml +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.python-version +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/.ruff.toml +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/ADD_NEW_API_QUICK.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/AGENTS.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/CHANGELOG.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/CLAUDE.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/DOCS.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/LICENSE +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/MANIFEST.in +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/PUBLISHING.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/README.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/SETUP.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/codecov.yml +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/client.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/announcement.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/candlestick.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/company.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/dividend.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/equity_change.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fs/non_financial.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/bank.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/insurance.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/non_financial.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/other_financial.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/security.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/indices.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/profile.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/announcement.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/asset_combination.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/asset_industry_combination.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/candlestick.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/fund.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/profile.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/fund/shareholdings.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/candlestick.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/constituent_weightings.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/constituents.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/drawdown.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/fundamental.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/index.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/index/tracking_fund.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/overview.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/development/code-style.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/development/contributing.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/development/testing.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/examples/company.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/examples/fund.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/examples/index.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/getting-started/configuration.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/getting-started/installation.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/getting-started/quickstart.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/index.md +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/company_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/company_profile_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/dividend_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/index_constituent_weightings_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/index_constituents_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/index_info_example.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/fund_response.json +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/base.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/company.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/dividend.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/equity_change.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fs/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fs/non_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/bank.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/insurance.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/non_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/other_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/security.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/indices.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/namespace.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/profile.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/asset_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/asset_industry_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/fund.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/profile.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/shareholdings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/constituent_weightings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/constituents.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/drawdown.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/fundamental.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/index.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/namespace.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/tracking_fund.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/client.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/config.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/exceptions.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/company.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/dividend.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/equity_change.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fs/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fs/non_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/bank.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/insurance.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/non_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/other_financial.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/security.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/indices.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/asset_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/asset_industry_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/fund.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/profile.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/shareholdings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/constituent_weightings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/constituents.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/drawdown.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/fundamental.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/index.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/tracking_fund.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/py.typed +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/__init__.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/api.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/dataframe.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/dict.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/rate_limiter.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/utils/retry.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/mkdocs.yml +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/mypy.ini +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/scripts/explore_api.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/scripts/generate_docs.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/scripts/publish.sh +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/api/cn/company/test_announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/api/cn/company/test_dividend.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/api/cn/index/test_constituents.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/conftest.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_client.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_cn_index_candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_cn_index_constituent_weightings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_company.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_company_profile.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_equity_change.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_announcement.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_asset_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_asset_industry_combination.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_candlestick.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_profile.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_shareholdings.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fundamental.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fundamental_bank.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fundamental_security.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_index.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_index_constituents.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_index_drawdown.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_index_fundamental.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_indices.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_non_financial_statements.py +0 -0
- {lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_tracking_fund.py +0 -0
|
@@ -106,7 +106,10 @@
|
|
|
106
106
|
"Bash(grep -r \"API Endpoint:\" lixinger/api/cn/company/*.py | head -10)",
|
|
107
107
|
"Bash(uv run mypy lixinger/api/cn/company/dividend.py)",
|
|
108
108
|
"Bash(uv run mypy lixinger/models/cn/company/dividend.py lixinger/api/cn/company/dividend.py)",
|
|
109
|
-
"Bash(uv run:*)"
|
|
109
|
+
"Bash(uv run:*)",
|
|
110
|
+
"Bash(curl *)",
|
|
111
|
+
"Read(//Users/JianGuo/.claude/plugins/cache/playwright-skill/playwright-skill/4.1.0/skills/playwright-skill/**)",
|
|
112
|
+
"Bash(node run.js ' *)"
|
|
110
113
|
]
|
|
111
114
|
}
|
|
112
115
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lixinger-python
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
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
|
|
@@ -17,11 +17,11 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Topic :: Office/Business :: Financial
|
|
18
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
19
|
Requires-Python: >=3.11
|
|
20
|
-
Requires-Dist: httpx[socks]
|
|
21
|
-
Requires-Dist: numpy
|
|
22
|
-
Requires-Dist: pandas
|
|
23
|
-
Requires-Dist: pandera
|
|
24
|
-
Requires-Dist: python-dotenv
|
|
20
|
+
Requires-Dist: httpx[socks]~=0.28.1
|
|
21
|
+
Requires-Dist: numpy~=2.4.1
|
|
22
|
+
Requires-Dist: pandas~=2.3.3
|
|
23
|
+
Requires-Dist: pandera~=0.28.1
|
|
24
|
+
Requires-Dist: python-dotenv~=1.2.1
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
|
|
27
27
|
This is the python SDK of lixinger API. Lixinger is a website of financial data.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
from typing import Any, Literal
|
|
2
|
+
|
|
3
|
+
import pandas as pd
|
|
4
|
+
|
|
5
|
+
from lixinger.api.base import BaseAPI
|
|
6
|
+
from lixinger.models.cn.company import Candlestick
|
|
7
|
+
from lixinger.utils.api import api
|
|
8
|
+
from lixinger.utils.dataframe import get_response_df
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CandlestickAPI(BaseAPI):
|
|
12
|
+
"""Candlestick (K-line) data APIs."""
|
|
13
|
+
|
|
14
|
+
async def get_candlestick( # noqa: PLR0913
|
|
15
|
+
self,
|
|
16
|
+
stock_code: str,
|
|
17
|
+
start_date: str,
|
|
18
|
+
end_date: str,
|
|
19
|
+
adjust_type: Literal["ex_rights", "lxr_fc_rights", "fc_rights", "bc_rights"] | None = None,
|
|
20
|
+
adjust_forward_date: str | None = None,
|
|
21
|
+
adjust_backward_date: str | None = None,
|
|
22
|
+
limit: int | None = None,
|
|
23
|
+
) -> pd.DataFrame:
|
|
24
|
+
"""获取K线数据.
|
|
25
|
+
|
|
26
|
+
API Endpoint: /cn/company/candlestick
|
|
27
|
+
API Method: POST
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
stock_code: 股票代码
|
|
31
|
+
start_date: 开始日期 (YYYY-MM-DD)
|
|
32
|
+
end_date: 结束日期 (YYYY-MM-DD)
|
|
33
|
+
adjust_type: 复权类型
|
|
34
|
+
- ex_rights: 不复权
|
|
35
|
+
- lxr_fc_rights: 理杏仁前复权
|
|
36
|
+
- fc_rights: 前复权
|
|
37
|
+
- bc_rights: 后复权
|
|
38
|
+
adjust_forward_date: 前复权指定起始时间点 (YYYY-MM-DD),需要与endDate一起使用且大于或等于endDate
|
|
39
|
+
adjust_backward_date: 后复权指定起始时间点 (YYYY-MM-DD),需要与startDate一起使用且小于或等于startDate
|
|
40
|
+
limit: 返回最近数据的数量
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
DataFrame containing candlestick data
|
|
44
|
+
|
|
45
|
+
"""
|
|
46
|
+
payload: dict[str, Any] = {
|
|
47
|
+
"stockCode": stock_code,
|
|
48
|
+
"startDate": start_date,
|
|
49
|
+
"endDate": end_date,
|
|
50
|
+
}
|
|
51
|
+
if adjust_type is not None:
|
|
52
|
+
payload["type"] = adjust_type
|
|
53
|
+
if adjust_forward_date is not None:
|
|
54
|
+
payload["adjustForwardDate"] = adjust_forward_date
|
|
55
|
+
if adjust_backward_date is not None:
|
|
56
|
+
payload["adjustBackwardDate"] = adjust_backward_date
|
|
57
|
+
if limit is not None:
|
|
58
|
+
payload["limit"] = limit
|
|
59
|
+
|
|
60
|
+
data = await self._request("POST", "/cn/company/candlestick", json=payload)
|
|
61
|
+
return get_response_df(data, Candlestick)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# Functional API instance
|
|
65
|
+
_api_instance = CandlestickAPI()
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@api
|
|
69
|
+
async def get_candlestick( # noqa: PLR0913
|
|
70
|
+
stock_code: str,
|
|
71
|
+
start_date: str,
|
|
72
|
+
end_date: str,
|
|
73
|
+
adjust_type: Literal["ex_rights", "lxr_fc_rights", "fc_rights", "bc_rights"] | None = None,
|
|
74
|
+
adjust_forward_date: str | None = None,
|
|
75
|
+
adjust_backward_date: str | None = None,
|
|
76
|
+
limit: int | None = None,
|
|
77
|
+
) -> pd.DataFrame:
|
|
78
|
+
"""获取K线数据.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
stock_code: 股票代码
|
|
82
|
+
start_date: 开始日期 (YYYY-MM-DD)
|
|
83
|
+
end_date: 结束日期 (YYYY-MM-DD)
|
|
84
|
+
adjust_type: 复权类型
|
|
85
|
+
- ex_rights: 不复权
|
|
86
|
+
- lxr_fc_rights: 理杏仁前复权
|
|
87
|
+
- fc_rights: 前复权
|
|
88
|
+
- bc_rights: 后复权
|
|
89
|
+
adjust_forward_date: 前复权指定起始时间点 (YYYY-MM-DD)
|
|
90
|
+
adjust_backward_date: 后复权指定起始时间点 (YYYY-MM-DD)
|
|
91
|
+
limit: 返回最近数据的数量
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
DataFrame containing candlestick data
|
|
95
|
+
|
|
96
|
+
Example:
|
|
97
|
+
>>> df = await get_candlestick(
|
|
98
|
+
... stock_code="300750",
|
|
99
|
+
... start_date="2025-04-01",
|
|
100
|
+
... end_date="2026-04-01",
|
|
101
|
+
... adjust_type="lxr_fc_rights"
|
|
102
|
+
... )
|
|
103
|
+
|
|
104
|
+
"""
|
|
105
|
+
return await _api_instance.get_candlestick(
|
|
106
|
+
stock_code=stock_code,
|
|
107
|
+
start_date=start_date,
|
|
108
|
+
end_date=end_date,
|
|
109
|
+
adjust_type=adjust_type,
|
|
110
|
+
adjust_forward_date=adjust_forward_date,
|
|
111
|
+
adjust_backward_date=adjust_backward_date,
|
|
112
|
+
limit=limit,
|
|
113
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "lixinger-python"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.5"
|
|
4
4
|
description = "Python SDK for Lixinger Financial Data API"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -20,11 +20,11 @@ classifiers = [
|
|
|
20
20
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
21
21
|
]
|
|
22
22
|
dependencies = [
|
|
23
|
-
"httpx[socks]
|
|
24
|
-
"numpy
|
|
25
|
-
"pandas
|
|
26
|
-
"pandera
|
|
27
|
-
"python-dotenv
|
|
23
|
+
"httpx[socks]~=0.28.1",
|
|
24
|
+
"numpy~=2.4.1",
|
|
25
|
+
"pandas~=2.3.3",
|
|
26
|
+
"pandera~=0.28.1",
|
|
27
|
+
"python-dotenv~=1.2.1",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.urls]
|
|
@@ -53,7 +53,6 @@ async def test_get_candlestick():
|
|
|
53
53
|
mock_request.return_value = mock_response
|
|
54
54
|
|
|
55
55
|
df = await get_candlestick(
|
|
56
|
-
type="1d",
|
|
57
56
|
stock_code="600036",
|
|
58
57
|
start_date="2024-01-09",
|
|
59
58
|
end_date="2024-01-10",
|
|
@@ -72,10 +71,9 @@ async def test_get_candlestick():
|
|
|
72
71
|
assert args[0] == "POST"
|
|
73
72
|
assert "/cn/company/candlestick" in str(args[1])
|
|
74
73
|
assert kwargs["json"]["stockCode"] == "600036"
|
|
75
|
-
assert kwargs["json"]["type"] == "1d"
|
|
76
74
|
assert kwargs["json"]["startDate"] == "2024-01-09"
|
|
77
75
|
assert kwargs["json"]["endDate"] == "2024-01-10"
|
|
78
|
-
assert "
|
|
76
|
+
assert "type" not in kwargs["json"]
|
|
79
77
|
|
|
80
78
|
|
|
81
79
|
@pytest.mark.asyncio
|
|
@@ -107,11 +105,10 @@ async def test_get_candlestick_with_adjust_type():
|
|
|
107
105
|
mock_request.return_value = mock_response
|
|
108
106
|
|
|
109
107
|
df = await get_candlestick(
|
|
110
|
-
type="1d",
|
|
111
108
|
stock_code="600036",
|
|
112
109
|
start_date="2024-01-09",
|
|
113
110
|
end_date="2024-01-10",
|
|
114
|
-
adjust_type="
|
|
111
|
+
adjust_type="lxr_fc_rights",
|
|
115
112
|
)
|
|
116
113
|
|
|
117
114
|
assert isinstance(df, pd.DataFrame)
|
|
@@ -120,4 +117,4 @@ async def test_get_candlestick_with_adjust_type():
|
|
|
120
117
|
|
|
121
118
|
# Verify request parameters
|
|
122
119
|
args, kwargs = mock_request.call_args
|
|
123
|
-
assert kwargs["json"]["
|
|
120
|
+
assert kwargs["json"]["type"] == "lxr_fc_rights"
|
|
@@ -629,7 +629,7 @@ wheels = [
|
|
|
629
629
|
|
|
630
630
|
[[package]]
|
|
631
631
|
name = "lixinger-python"
|
|
632
|
-
version = "0.3.
|
|
632
|
+
version = "0.3.5"
|
|
633
633
|
source = { editable = "." }
|
|
634
634
|
dependencies = [
|
|
635
635
|
{ name = "httpx", extra = ["socks"] },
|
|
@@ -661,11 +661,11 @@ dev = [
|
|
|
661
661
|
|
|
662
662
|
[package.metadata]
|
|
663
663
|
requires-dist = [
|
|
664
|
-
{ name = "httpx", extras = ["socks"], specifier = "
|
|
665
|
-
{ name = "numpy", specifier = "
|
|
666
|
-
{ name = "pandas", specifier = "
|
|
667
|
-
{ name = "pandera", specifier = "
|
|
668
|
-
{ name = "python-dotenv", specifier = "
|
|
664
|
+
{ name = "httpx", extras = ["socks"], specifier = "~=0.28.1" },
|
|
665
|
+
{ name = "numpy", specifier = "~=2.4.1" },
|
|
666
|
+
{ name = "pandas", specifier = "~=2.3.3" },
|
|
667
|
+
{ name = "pandera", specifier = "~=0.28.1" },
|
|
668
|
+
{ name = "python-dotenv", specifier = "~=1.2.1" },
|
|
669
669
|
]
|
|
670
670
|
|
|
671
671
|
[package.metadata.requires-dev]
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
from typing import Any, Literal
|
|
2
|
-
|
|
3
|
-
import pandas as pd
|
|
4
|
-
|
|
5
|
-
from lixinger.api.base import BaseAPI
|
|
6
|
-
from lixinger.models.cn.company import Candlestick
|
|
7
|
-
from lixinger.utils.api import api
|
|
8
|
-
from lixinger.utils.dataframe import get_response_df
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CandlestickAPI(BaseAPI):
|
|
12
|
-
"""Candlestick (K-line) data APIs."""
|
|
13
|
-
|
|
14
|
-
async def get_candlestick(
|
|
15
|
-
self,
|
|
16
|
-
type: Literal["1d", "1w", "1m", "5m", "15m", "30m", "60m"],
|
|
17
|
-
stock_code: str,
|
|
18
|
-
start_date: str,
|
|
19
|
-
end_date: str,
|
|
20
|
-
adjust_type: Literal["none", "qxw", "hxw"] | None = None,
|
|
21
|
-
) -> pd.DataFrame:
|
|
22
|
-
"""获取K线数据.
|
|
23
|
-
|
|
24
|
-
API Endpoint: /cn/company/candlestick
|
|
25
|
-
API Method: POST
|
|
26
|
-
|
|
27
|
-
Args:
|
|
28
|
-
type: K线类型 (1d, 1w, 1m, 5m, 15m, 30m, 60m)
|
|
29
|
-
stock_code: 股票代码
|
|
30
|
-
start_date: 开始日期 (YYYY-MM-DD)
|
|
31
|
-
end_date: 结束日期 (YYYY-MM-DD)
|
|
32
|
-
adjust_type: 复权类型 (none, qxw, hxw)
|
|
33
|
-
|
|
34
|
-
"""
|
|
35
|
-
payload: dict[str, Any] = {
|
|
36
|
-
"type": type,
|
|
37
|
-
"stockCode": stock_code,
|
|
38
|
-
"startDate": start_date,
|
|
39
|
-
"endDate": end_date,
|
|
40
|
-
}
|
|
41
|
-
if adjust_type is not None:
|
|
42
|
-
payload["adjustType"] = adjust_type
|
|
43
|
-
|
|
44
|
-
data = await self._request("POST", "/cn/company/candlestick", json=payload)
|
|
45
|
-
return get_response_df(data, Candlestick)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
# Functional API instance
|
|
49
|
-
_api_instance = CandlestickAPI()
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
@api
|
|
53
|
-
async def get_candlestick(
|
|
54
|
-
type: Literal["1d", "1w", "1m", "5m", "15m", "30m", "60m"],
|
|
55
|
-
stock_code: str,
|
|
56
|
-
start_date: str,
|
|
57
|
-
end_date: str,
|
|
58
|
-
adjust_type: Literal["none", "qxw", "hxw"] | None = None,
|
|
59
|
-
) -> pd.DataFrame:
|
|
60
|
-
"""获取K线数据.
|
|
61
|
-
|
|
62
|
-
Args:
|
|
63
|
-
type: K线类型 (1d, 1w, 1m, 5m, 15m, 30m, 60m)
|
|
64
|
-
stock_code: 股票代码
|
|
65
|
-
start_date: 开始日期 (YYYY-MM-DD)
|
|
66
|
-
end_date: 结束日期 (YYYY-MM-DD)
|
|
67
|
-
adjust_type: 复权类型 (none, qxw, hxw)
|
|
68
|
-
|
|
69
|
-
"""
|
|
70
|
-
return await _api_instance.get_candlestick(
|
|
71
|
-
type=type,
|
|
72
|
-
stock_code=stock_code,
|
|
73
|
-
start_date=start_date,
|
|
74
|
-
end_date=end_date,
|
|
75
|
-
adjust_type=adjust_type,
|
|
76
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/non_financial.md
RENAMED
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/docs/api/company/fundamental/other_financial.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/examples/index_constituent_weightings_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/insurance.py
RENAMED
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/non_financial.py
RENAMED
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/company/fundamental/security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/fund/asset_industry_combination.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/api/cn/index/constituent_weightings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fs/non_financial.py
RENAMED
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/__init__.py
RENAMED
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/bank.py
RENAMED
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/insurance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/company/fundamental/security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/fund/asset_combination.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/lixinger/models/cn/index/constituent_weightings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_cn_index_constituent_weightings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lixinger_python-0.3.3 → lixinger_python-0.3.5}/tests/test_fund_asset_industry_combination.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|