Metadata-Version: 2.4
Name: fintables
Version: 0.1.3
Summary: Fintables mobile API client and CLI tool
Author: Sinan Erdinç
License: MIT
Project-URL: Homepage, https://github.com/sinanerdinc/fintables
Project-URL: Repository, https://github.com/sinanerdinc/fintables
Project-URL: Issues, https://github.com/sinanerdinc/fintables/issues
Keywords: fintables,finance,borsa,bist,cli,api,stock-market
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Financial :: Investment
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27.0
Requires-Dist: curl-cffi>=0.7.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: pydantic-settings>=2.2.0
Requires-Dist: typer>=0.12.0
Requires-Dist: rich>=13.7.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: fastmcp>=0.1.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: setuptools-scm>=8.0; extra == "dev"
Dynamic: license-file


<p align="center">
  <img src="https://raw.githubusercontent.com/sinanerdinc/fintables/main/icon.png" width="128" height="128" alt="Fintables icon">
</p>


<h1 align="center">Fintables</h1>

<p align="center">
  Fintables Python paketi ve CLI aracı.
</p>



## Özellikler
- **Public Endpointler**: Şirket detayları (`company`), sembol özetleri (`symbol summary`), analist değerlendirmeleri (`analyst`), çoklu arama (`search`).
- **Authenticated Endpointler**: Finansal tablolar (`symbol sheets`), haber akışı (`feed`), favoriler (`watchlist`), notlar (`memo`).
- **Zengin Terminal Görünümü**: `rich` destekli tablolar, renkli kartlar, rozetler ve ikonlar.
- **JSON Çıktı Desteği**: Otomasyonlar ve scriptler için `--output json`.
- **Async-First Mimari**: `httpx` ve `pydantic v2` tabanlı.

## Kurulum
```bash
pip install fintables
```

## Yapılandırma
`.env.example` dosyasını `.env` olarak kopyalayın ve kimlik bilgilerinizi girin:
```bash
cp .env.example .env
```

## Model Context Protocol (MCP) Yapay Zeka Entegrasyonu

`fintables`, **FastMCP** mimarisi sayesinde Claude Desktop, Antigravity IDE, Cursor veya vLLM/Ollama destekli yapay zeka ajanlarıyla doğrudan konuşturulabilir.

### MCP Sunucusunu Başlatma:
```bash
# Standart STDIO modunda çalıştırma (Claude Desktop / IDE'ler için)
fintables mcp

# veya SSE modunda
fintables mcp --transport sse
```

### Claude Desktop / Cursor Konfigürasyonu (`claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "fintables": {
      "command": "fintables",
      "args": ["mcp"],
      "env": {
        "FINTABLES_EMAIL": "user@example.com",
        "FINTABLES_PASSWORD": "secretpassword"
      }
    }
  }
}
```
*(Artık Claude veya AI Ajanınıza "ASELS bilançosunu incele", "TLY fon getirilerini getir", "FROTO için hedef fiyat analist tahminleri nedir?" gibi soruları doğrudan sorabilirsiniz.)*

## CLI Kullanımı
```bash
# Şirket bilgisi
fintables company ASELS

# Sembol özeti
fintables symbol ASELS summary

# Analist tahminleri
fintables analyst ASELS
fintables analyst ASELS --model-portfolio

# Çoklu arama
fintables search Polyester

# Finansal tablolar (Authenticated)
fintables symbol FROTO sheets
fintables symbol FROTO sheets --sheet balance --periods 5

# Haber akışı (Authenticated)
fintables feed
fintables feed FROTO

# Favori hisseler (Authenticated)
fintables watchlist add FROTO
fintables watchlist remove FROTO

# Notlar (Authenticated)
fintables memo list
fintables memo add FROTO "Beklentim pozitif"
fintables memo update 42212 "Güncellenmiş not"
fintables memo delete 42212

# Fonlar
fintables fund TLY
fintables fund MAC

# Araştırma Yazıları & Şirket Notları (Authenticated)
fintables post list                                          # tüm yazıları listele
fintables post list --filter "Şirket Notları"               # kategori filtresi
fintables post list --page 2                                 # sayfa ilerle
fintables post read altny-analist-toplantisi-notlari-2026-6 # yazıyı oku (+ benzer yazılar)
fintables post read <slug> --output json                    # JSON çıktı

# Bültenler (Authenticated)
fintables newsletter list                                    # tüm bültenleri listele
fintables newsletter list --category bist                   # kategori filtresi
fintables newsletter list --filter "Günlük"                 # başlık/kategori filtresi
fintables newsletter list --page 2                          # sayfa ilerle
fintables newsletter read endekslerde-tarihi-degisim        # bülten içeriğini oku
fintables newsletter read <slug> --output json              # JSON çıktı

# Videolar (YouTube & Borsa Programları)
fintables video list                                         # videoları listele
fintables video list --series "Haftalık Sohbetler"           # seriye göre filtrele
fintables video list --series "Halka Arz Oluyor"             # halka arz videoları
fintables video list --filter "Bilanço"                      # başlığa göre filtrele
fintables video list --page 2                                # sayfa ilerle
fintables video show bilanco-donemini-kapatiyoruz-fintables-haftalik-sohbetler-149 # detay & bölümler
fintables video show <slug> --output json                    # JSON formatında çıktı

# Ajanda / Ekonomik Takvim (Authenticated)
fintables agenda                         # bugünün ajandası (varsayılan)
fintables agenda today                   # bugün
fintables agenda thisWeek                # bu hafta
fintables agenda nextWeek                # gelecek hafta
fintables agenda thisWeek --type dividend  # sadece temettüler
fintables agenda thisWeek --type macro     # sadece makro veriler
fintables agenda thisWeek --output json    # JSON çıktı

# Sanal Portföy (Authenticated)
fintables portfolio list                                                # tüm portföyleri listele
fintables portfolio create "Benim Portföyüm"                           # yeni portföy oluştur
fintables portfolio show "Benim Portföyüm"                             # pozisyonları göster
fintables portfolio buy  "Benim Portföyüm" SASA 250000 2.76 --date 2026-09-22   # alış ekle
fintables portfolio sell "Benim Portföyüm" SASA 100000 3.10 --date 2026-09-22   # satış ekle
fintables portfolio delete "Benim Portföyüm"                           # portföyü sil (onay yok)
fintables portfolio rename "Benim Portföyüm" "Yeni İsim"               # portföy adını değiştir

# UUID ile de kullanılabilir (isimsiz veya belirsiz durumlarda)
fintables portfolio show ad857c49-d902-4f58-a57a-6429e7b40460

# Bildirimler (Authenticated)
fintables notification list                   # bildirimleri listele
fintables notification list --page-size 50    # sayfa boyutu ile listele
fintables notification unread                 # okunmamış bildirim durumu ve son okuma tarihi
fintables notification mark-read              # tüm bildirimleri okundu olarak işaretle
fintables notification list --output json     # JSON çıktısı

# Dil Desteği (i18n)
fintables --lang tr [KOMUT]                   # Türkçe CLI ve çıktılar (varsayılan: sistem dili veya tr)
fintables --lang en [COMMAND]                 # İngilizce CLI ve çıktılar
# Veya ortam değişkeni:
export FINTABLES_LANG=tr  # ya da en
```


## Shell Otomatik Tamamlama (Autocompletion)

Terminalde `fintables` komutlarını ve hisse kodlarını `<TAB>` tuşu ile otomatik tamamlamak için kullandığınız kabuğa uygun komutla bir defalık kurulum yapabilirsiniz:

```bash
# Zsh kullanıyorsanız (Mac varsayılanı)
fintables --install-completion zsh

# Bash kullanıyorsanız
fintables --install-completion bash

# Fish kullanıyorsanız
fintables --install-completion fish
```
*(Kurulum tamamlandıktan sonra terminalinizi kapatıp açmanız veya `source ~/.zshrc` çalıştırmanız yeterlidir.)*

## İnteraktif Shell / REPL Modu

Her komut için tekrar `fintables` yazmak yerine interaktif bir finans terminali ortamı başlatabilirsiniz:

```bash
fintables shell
```

```text
🚀 Fintables Interactive Shell (v0.1.0)
fintables> company ASELS
fintables> symbol FROTO summary
fintables> watchlist add FROTO
fintables> exit
```

## Python SDK Kullanımı

Paketi başka bir Python projesinde kütüphane/SDK olarak kullanmak isterseniz `FintablesClient` istemcisini ve endpoint fonksiyonlarını doğrudan import edebilirsiniz:

```python
import asyncio
from fintables import FintablesClient
from fintables.api.endpoints import get_company, get_symbol_summary, add_favorite

async def main():
    async with FintablesClient() as client:
        # Şirket detayları (Public)
        company = await get_company(client, "ASELS")
        print(f"Şirket Kodu: {company.code} | Ünvan: {company.title}")

        # Sembol özeti (Public)
        summary = await get_symbol_summary(client, "ASELS")
        print(f"Sektör Sayısı: {len(summary.data.sectors)}")

        # Favori ekleme (Authenticated - .env bilgilerini kullanır)
        # res = await add_favorite(client, "ASELS")

if __name__ == "__main__":
    asyncio.run(main())
```

## Yasal Uyarı (Disclaimer)

> **Önemli:** Bu proje tamamen **eğitim ve kişisel kullanım amacıyla** geliştirilmiş açık kaynaklı gayriresmi bir araçtır. 
> 
> - Fintables (Fintables Bilişim Teknolojileri A.Ş.) ile hiçbir resmi bağı, ortaklığı veya sponsorluğu yoktur.
> - Bu araç finansal tavsiye, yatırım tavsiyesi veya alım-satım önerisi sunmaz.
> - Verilerin doğruluğu, güncelliği veya eksiksizliği konusunda herhangi bir garanti verilmez. Veri sağlayıcısından alınan verilerin kullanımında doğabilecek her türlü sorumluluk kullanıcıya aittir.
> - Yazılım "olduğu gibi" (AS IS) sunulmaktadır; yazar ve geliştiriciler doğabilecek doğrudan veya dolaylı hiçbir zarardan sorumlu tutulamaz.

## Lisans

Bu proje [MIT Lisansı](LICENSE) altında lisanslanmıştır.



