0001-rimozione-di-pandas-ta-per-conflitto-di-dipendenze
Contesto
Durante l’integrazione delle librerie per le funzionalità AI (unstructured, chromadb, etc.), è emerso un conflitto di dipendenze critico e irrisolvibile legato alla libreria numpy.
-
pandas-ta(v0.3.14b0): Questa libreria, usata per l’analisi dei pattern di candele nel Market Explorer, dipende implicitamente da una versione dinumpy< 2.0. Il suo codice sorgente utilizza API (es.numpy.NaN) che sono state rimosse innumpy 2.0. -
Librerie AI (
unstructured, etc.): Essendo moderne, queste librerie richiedono o beneficiano di una versione recente dinumpy(>= 2.0) e non sono retrocompatibili con le APInumpypiù vecchie.
Questa situazione ha creato un vicolo cieco: non esiste una singola versione di numpy in grado di soddisfare i requisiti di entrambi i gruppi di dipendenze, causando crash dell’applicazione all’avvio o errori a runtime.
Decisione
Abbiamo deciso di rimuovere completamente la dipendenza da pandas-ta dal progetto FIRE.
La funzionalità che utilizzava pandas-ta (il riconoscimento di pattern di candele nel DataAnalysisWorker) è stata re-implementata utilizzando il nostro Analytics Core interno, che già conteneva implementazioni per i pattern più comuni.
Conseguenze
Positive
- Risoluzione Definitiva del Conflitto: Il blocco allo sviluppo è stato rimosso, permettendo all’ambiente di utilizzare
numpy 2.0e l’intero ecosistema AI moderno. - Aumento della Coerenza Architetturale: Ora tutta la logica di analisi tecnica (indicatori e pattern) risiede in un’unica fonte di verità (
Analytics Core), garantendo un comportamento uniforme in tutta l’applicazione (Scanner, Explorer, Strategie). - Riduzione della Fragilità del Progetto: Abbiamo eliminato la dipendenza da un pacchetto esterno il cui ciclo di manutenzione non è allineato con le evoluzioni delle librerie core dell’ecosistema Python.
- Pieno Controllo: L’implementazione e il testing di tutti i pattern di analisi tecnica sono ora sotto il nostro controllo diretto.
Negative
- Riduzione della Copertura Funzionale (Temporanea): La funzione
df.ta.cdl_pattern(name="all")dipandas-taera molto comoda e riconosceva decine di pattern. La nostra implementazione attuale nelDataAnalysisWorkersupporta un sottoinsieme più piccolo ma fondamentale di questi pattern. Questo è considerato un compromesso accettabile per la stabilità del progetto. - Sforzo di Manutenzione Futuro: L’aggiunta di nuovi pattern di candele richiederà uno sforzo di sviluppo interno, invece di essere fornita “gratuitamente” da una libreria esterna.