Alilnvest-Codal
A resilient Python client for Iranian Codal disclosures, financial statements, caching, reporting, and rate-limit-aware automation.
نام انتشار این پروژه Alilnvest-Codal است و برند رسمی خروجیها Alilnvest است.
این کتابخانه برای رباتهای تحلیل بازار ایران، سرویسهای backfill، اسکریپتهای بنیادی و کانالهای اطلاعرسانی طراحی شده و مستقل از پروژههای c5/c6 است.
API و بازهٔ تاریخ
این نسخه کاملاً مستقل است و فقط با namespace alilnvest_codal منتشر میشود. نام و import قدیمی namespace قدیمی داخل این بسته وجود ندارد.
import alilnvest_codal as cp
reports = cp.income_statement("فولاد", max_reports=5)
print(reports[0].period_end_to_date)
تاریخها hard-code نشدهاند. در صورتهای مالی، جستوجوی اطلاعیه و عملیات اتوماسیون میتوان بازهٔ دلخواه جلالی را تعیین کرد:
reports = cp.income_statement(
"فولاد",
from_date="1403/01/01",
to_date="1403/12/30",
max_reports=20,
)
پارامترهای from_date و to_date با قالب YYYY/MM/DD اعتبارسنجی میشوند. اگر تاریخ داده نشود، from_date از تنظیم پیشفرض کتابخانه و to_date از تاریخ روز جلالی استفاده میکند. برای کنترل دقیق backfill همیشه هر دو تاریخ را صریح ارسال کنید.
نصب
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install .
برای قابلیتهای async:
python -m pip install '.[async]'
استفادهٔ سریع
import alilnvest_codal as cp
income = cp.income_statement("توسن")
balance = cp.balance_sheet("توسن")
cashflow = cp.cash_flow_statement("توسن")
letters = cp.search_letters("توسن", max_pages=1)
snapshot = cp.financial_snapshot("توسن")
خطاهای ساختاریافته
try:
reports = cp.income_statement("نماد_نامعتبر")
except cp.SymbolNotFoundError as exc:
print(exc.symbol)
except cp.RateLimitError as exc:
print(exc.retry_after)
except cp.NetworkError as exc:
print(exc.status_code)
نرخ درخواست، retry و circuit breaker
import alilnvest_codal as cp
cp.configure(
min_delay=2.0,
max_delay=3.5,
max_retries=2,
symbol_min_delay=15,
symbol_max_delay=20,
)
کتابخانه پاسخ Retry-After را رعایت میکند، خطاهای موقت را با backoff کنترل میکند و در شرایط شکست پیاپی circuit breaker دارد. هیچ نرخ ثابتی مسدودنشدن IP را تضمین نمیکند؛ برای چند پردازه یا چند سرویس روی یک IP از صف مرکزی استفاده کنید.
کش و تنظیمات پیشنهادی
CODAL_CACHE_DIR=~/bourse_reports/codal_cache
CODAL_FROM_JDATE=1403/01/01
CODAL_TO_JDATE=1405/12/29
CODAL_TIMEOUT=45
CODAL_MAX_RETRIES=3
CODAL_LOG_LEVEL=INFO
کتابخانه قبل از شبکه cache را بررسی میکند و در صورت شکست، تاریخچهٔ سالم را با دادهٔ ناقص جایگزین نمیکند.
اتصال به کانالهای Alilnvest
کتابخانه توکن پیامرسان را داخل کد قرار نمیدهد. ارسال پیام باید در adapter برنامه انجام شود و secrets فقط در .env خصوصی باشند.
کانال بله
ALILNVEST_CHANNEL_NAME=Alilnvest
BALE_BOT_TOKEN=توکن_ربات_بله
BALE_CHANNEL_ID=@شناسه_کانال_بله
ربات باید در کانال بلهٔ Alilnvest عضو و دارای مجوز ارسال باشد.
کانال تلگرام
ALILNVEST_CHANNEL_NAME=Alilnvest
TELEGRAM_BOT_TOKEN=توکن_ربات_تلگرام
TELEGRAM_CHANNEL_ID=@شناسه_کانال_تلگرام
ربات باید در کانال تلگرام Alilnvest ادمین باشد. نام رسمی برند و کانالها در کپشنها، گزارشها و watermarkها نیز باید Alilnvest باشد.
ساختار انتشار
src/alilnvest_codal/: implementation سازگار با پروژههای قبلیsrc/alilnvest_codal/: namespace جدید برندشدهREADME.md: راهنمای اصلیMIGRATION.md: راهنمای سازگاریCHANGELOG.md: تاریخچهٔ نسخهNOTICE.md: مالکیت و قواعد برندLICENSE: مجوز استفاده
فایلهای تست، fixture، probe، diagnose و اسکریپتهای توسعه از بستهٔ انتشار حذف شدهاند. تستها باید در مخزن توسعهٔ خصوصی نگهداری شوند، نه در archive تولیدی.
دربارهٔ کپیبرداری
کدی که در GitHub عمومی قرار میگیرد از نظر فنی قابل مشاهده و قابل کپی است. هیچ obfuscation واقعی این موضوع را حل نمیکند و obfuscation دیباگ، امنیت و نگهداری را ضعیف میکند. این بسته بهجای آن versioning، metadata، NOTICE.md و برند مشخص دارد. اگر مالکیت انحصاری لازم است، repository را private نگه دارید و قبل از تغییر MIT به مجوز source-available محدودکننده، بررسی حقوقی انجام دهید.
هشدار استفاده
این پروژه ابزار دریافت و پردازش داده است، نه توصیهٔ سرمایهگذاری. کیفیت و دسترسپذیری Codal ممکن است تغییر کند. قبل از استفادهٔ تولیدی، rate limit، مجوز دسترسی، cache و قوانین داده را در محیط خود بررسی کنید.
برند رسمی
- نام محصول: Alilnvest-Codal
- کانال بله: Alilnvest@ در بله
- کانال تلگرام: Alilnvest@ در تلگرام
- نام خروجی: Alilnvest Codal Report
- نام پیشنهادی کپشن: Alilnvest Market Intelligence
Metadata
Release files for Alilnvest-Codal 1.5.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| alilnvest_codal-1.5.5.tar.gz | 89.1 kB | Without provenance | Details for alilnvest_codal-1.5.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| alilnvest_codal-1.5.5-py3-none-any.whl | Python 3 | none | any | Details for alilnvest_codal-1.5.5-py3-none-any.whl |
Total release size: 192.6 kB
Release files / alilnvest_codal-1.5.5.tar.gz
| Download URL | alilnvest_codal-1.5.5.tar.gz |
|---|---|
| Size | 89.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b0af82eaa140b6916223702671ded4379dc7a01ff4e65d81a40a8b9a93a7982
|
|
BLAKE2b-256 checksum How to use checksums |
e624910005f5c8697af84735308f30b04d5f3378b00f2f5467387509789bfbe4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / alilnvest_codal-1.5.5-py3-none-any.whl
| Download URL | alilnvest_codal-1.5.5-py3-none-any.whl |
|---|---|
| Size | 103.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56a11394bc315a56d9a4e465424d984c57dea998b224c371722d442c4a47d079
|
|
BLAKE2b-256 checksum How to use checksums |
43673b509fb684b36af797ce74e6cecb628d27f1e3a4f9ef354d60671f7ab9b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for Alilnvest-Codal 1.5.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.