feat: funciones Python datascience, finance, cybersecurity y pipelines

Datascience: aggregate_by_group, deduplicate_entities/relations, detect_drift,
diff_entities/relations, extract_entities/relations_llm, hotness_score, melt,
merge_graphs, pivot, build_entity/relation_schema_prompt.
Finance: avellaneda_stoikov_quotes, generate_gbm_prices, generate_taker_order,
hawkes_intensity + módulo finance.py.
Cybersecurity: envelope_encrypt/decrypt + módulo cybersecurity.py.
Pipelines: extraction_pipeline, monte_carlo_market, run_market_sim.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 17:11:32 +02:00
parent 928a3319d5
commit 837563c3ba
62 changed files with 5376 additions and 0 deletions
@@ -0,0 +1,78 @@
"""Tests para diff_relations."""
import sys
import os
sys.path.insert(0, os.path.dirname(__file__))
from diff_relations import diff_relations
def test_relacion_anadida():
before = [{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0}]
after = [
{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0},
{"source_id": "C", "target_id": "D", "relation_type": "owns", "weight": 0.5},
]
result = diff_relations(before, after)
assert len(result["added"]) == 1
assert result["added"][0]["source_id"] == "C"
assert result["removed"] == []
assert result["unchanged"] == 1
assert "1 added" in result["summary"]
def test_relacion_eliminada():
before = [
{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0},
{"source_id": "C", "target_id": "D", "relation_type": "owns", "weight": 0.5},
]
after = [{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0}]
result = diff_relations(before, after)
assert result["added"] == []
assert len(result["removed"]) == 1
assert result["removed"][0]["source_id"] == "C"
assert result["unchanged"] == 1
assert "1 removed" in result["summary"]
def test_relacion_con_metadata_modificada_mismo_source_target_type_distinto_weight():
before = [{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0}]
after = [{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 5.0}]
result = diff_relations(before, after)
assert result["added"] == []
assert result["removed"] == []
assert len(result["modified"]) == 1
mod = result["modified"][0]
assert mod["key"] == "A|B|knows"
assert "weight" in mod["changes"]
assert mod["changes"]["weight"]["old"] == 1.0
assert mod["changes"]["weight"]["new"] == 5.0
assert result["unchanged"] == 0
def test_key_compuesta_funciona_correctamente():
# Misma pareja A->B pero diferente tipo de relacion -> dos relaciones distintas
before = [
{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0},
{"source_id": "A", "target_id": "B", "relation_type": "owns", "weight": 0.5},
]
after = [
{"source_id": "A", "target_id": "B", "relation_type": "knows", "weight": 1.0},
{"source_id": "A", "target_id": "B", "relation_type": "trusts", "weight": 0.8},
]
result = diff_relations(before, after)
# owns eliminada, trusts añadida, knows sin cambios
assert len(result["added"]) == 1
assert result["added"][0]["relation_type"] == "trusts"
assert len(result["removed"]) == 1
assert result["removed"][0]["relation_type"] == "owns"
assert result["unchanged"] == 1
assert result["modified"] == []
if __name__ == "__main__":
test_relacion_anadida()
test_relacion_eliminada()
test_relacion_con_metadata_modificada_mismo_source_target_type_distinto_weight()
test_key_compuesta_funciona_correctamente()
print("All tests passed.")