diff --git a/README.md b/README.md index 6e95660..045b9e3 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,10 @@ - [Diferenciais Técnicos](#diferenciais-técnicos) - [Argumentos e Flags de Linha de Comando](#argumentos-e-flags-de-linha-de-comando) - [Exemplos Práticos de Uso](#exemplos-práticos-de-uso) +- [3. Extrator e Parser Multimotor de Artigos](#3--extrator-e-parser-multimotor-de-artigos) + - [Visão Geral e Tríplice Extração](#visão-geral-e-tríplice-extração) + - [Argumentos e Flags CLI](#argumentos-e-flags-cli) + - [Exemplos de Uso](#exemplos-de-uso) - [Estrutura do Projeto](#-estrutura-do-projeto) - [Testes e Qualidade de Código](#-testes-e-qualidade-de-código) - [Licença](#-licença) @@ -37,6 +41,7 @@ O **TextNLPClassifierApp** reúne ferramentas de engenharia de dados e processam 1. **`classify.py`**: Motor de classificação semântica e contextual que determina o grau de aderência e inerência de um documento Markdown em relação a uma entidade alvo definida em um **ECP Snapshot (Entity Context Profile)**. 2. **`scripts/extract_google_news.py`**: Extrator de notícias por palavra-chave, idioma e região geográfica que utiliza o motor stealth **Foxcape** (em modo headless), decodificação paralela de URLs para os links reais dos portais de notícias e feedback em tempo real. +3. **`scripts/extract_article_contents.py`**: Extrator e parser de artigos multimotor com navegação stealth Foxcape headless e extração combinada via **Trafilatura**, **Newspaper4k** (NLP) e **Readability**, consolidando texto higienizado, autores, datas, imagens e resumos em JSON estruturado. --- @@ -208,6 +213,49 @@ python scripts/extract_google_news.py -q "inteligência artificial" -s | jq '.it --- +## 3. 📰 Extrator e Parser Multimotor de Artigos + +### Visão Geral e Tríplice Extração + +O script `scripts/extract_article_contents.py` lê os arquivos JSON gerados pelo extrator do Google News (ou qualquer lista contendo `items` com `url`), acessa cada página via **Foxcape** em modo stealth headless (reutilizando uma única sessão de navegador ativa com espera do evento `domcontentloaded`), e executa simultaneamente 3 motores especializados de extração: + +1. **Trafilatura**: Texto principal higienizado, autores, data de publicação, categorias, tags, URL canônica e payload estruturado nativo. +2. **Newspaper4k**: Artigo completo, autores, imagens (`top_image` e galeria), resumo automático e palavras-chave (*keywords*) extraídas por NLP nativo. +3. **Readability (`readability-lxml`)**: Miolo limpo em HTML sem anúncios ou scripts supérfluos, títulos e texto puro formatado. + +O JSON final consolidado é salvo em `out/` com descarte de strings HTML brutas para manter o arquivo leve e veloz. + +### Argumentos e Flags CLI + +| Parâmetro | Tipo | Padrão | Descrição | +|---|---|---|---| +| `-i, --input` | Caminho (obrigatório) | — | Arquivo JSON de busca de notícias (ex: `out/river_plate.json`). | +| `-o, --output` | Caminho (opcional) | `_extracted.json` | Arquivo JSON de destino consolidado. | +| `-l, --limit` | Inteiro (opcional) | Todos | Limita a quantidade máxima de notícias processadas. | +| `--lang, --language` | String (opcional) | Do JSON / `en` | Sobrescreve o código de idioma para o NLP do Newspaper4k (ex: `pt`, `es`, `en`). | +| `-t, --timeout` | Inteiro (opcional) | `30` | Timeout em segundos por página no Foxcape. | +| `-s, --silent` | Flag booleana | `False` | Suprime logs informativos de progresso no `stderr`. | + +### Exemplos de Uso + +#### 1. Extração Completa Automática +```bash +python scripts/extract_article_contents.py -i out/river_plate.json +# Gera automaticamente out/river_plate_extracted.json +``` + +#### 2. Amostragem Rápida (Limit 2 Notícias) +```bash +python scripts/extract_article_contents.py -i out/river_plate.json --limit 2 +``` + +#### 3. Destino Customizado e Timeout Ajustado +```bash +python scripts/extract_article_contents.py -i out/petrobras_result.json -o out/petrobras_full.json --timeout 45 +``` + +--- + ## 📁 Estrutura do Projeto ```text @@ -215,19 +263,21 @@ TextNLPClassifierApp/ ├── classify.py # CLI principal do Classificador de Inerência ├── scripts/ │ ├── __init__.py # Pacote utilitário de scripts -│ └── extract_google_news.py # CLI de Extração de Manchetes do Google News +│ ├── extract_google_news.py # CLI de Extração de Manchetes do Google News +│ └── extract_article_contents.py # CLI de Extração e Parsing Multimotor de Artigos ├── src/ # Módulos centrais do classificador │ ├── classifier.py # Orquestrador de classificação (Tier 1, 2, 3) │ ├── models.py # Modelos de dados e esquemas (ECPSnapshot, Decision) │ ├── preprocessor.py # Normalização de texto e detecção de idioma │ └── adapters/ # Adaptadores opcionais de Embeddings e LLM ├── specs/ # Especificações e planos arquiteturais (Speckit) -│ ├── 001-nlp-classifier/ # Especificações do classificador -│ └── 002-google-news-extractor/ # Especificações do extrator de notícias +│ ├── 001-multilingual-entity-classifier/ +│ ├── 002-google-news-extractor/ +│ └── 003-article-content-extractor/ # Specs da feature de extração multimotor ├── tests/ # Suíte de testes automatizados -│ ├── fixtures/ # Amostras de ECP, Markdown e XML RSS -│ ├── test_classifier.py # Testes unitários do classificador -│ └── test_extract_google_news.py # Testes unitários e testes E2E ao vivo +│ ├── test_classifier.py +│ ├── test_extract_google_news.py +│ └── test_extract_article_contents.py # Testes do extrator de conteúdo ├── requirements.txt # Dependências do projeto ├── pyproject.toml # Configurações de ferramentas (pytest, ruff, mypy) └── README.md # Documentação principal diff --git a/classify.py b/classify.py index 65609d8..b77e8f8 100644 --- a/classify.py +++ b/classify.py @@ -4,13 +4,12 @@ from __future__ import annotations import argparse -import json import sys from pathlib import Path from src import __version__ -from src.models import ECPSnapshot, ClassificationError, ErrorCode from src.classifier import InherenceClassifier +from src.models import ClassificationError, ECPSnapshot, ErrorCode # Ensure UTF-8 output streams across all platforms if hasattr(sys.stdout, "reconfigure"): diff --git a/docs/googlenews_extractor_guia_completo.md b/docs/googlenews_extractor_guia_completo.md index 82336a9..2ec75d4 100644 --- a/docs/googlenews_extractor_guia_completo.md +++ b/docs/googlenews_extractor_guia_completo.md @@ -63,7 +63,9 @@ class ExtractNewsInputDTO(BaseModel): keyword: str = Field(..., description="Palavra ou expressão de busca") language: str = Field(..., description="Código do idioma (ex: 'es', 'pt', 'en')") - max_pages: int = Field(default=3, ge=1, le=10, description="Quantidade de páginas para extrair (1 a 10)") + max_pages: int = Field( + default=3, ge=1, le=10, description="Quantidade de páginas para extrair (1 a 10)" + ) ``` | Campo | Tipo | Obrigatório | Descrição | @@ -90,7 +92,9 @@ class SearchQuery: raise InvalidSearchQueryError("A palavra-chave não pode ser vazia.") if not self.language or len(self.language.strip()) < 2: - raise InvalidSearchQueryError("O idioma deve conter pelo menos 2 caracteres (ex: 'es', 'pt', 'en').") + raise InvalidSearchQueryError( + "O idioma deve conter pelo menos 2 caracteres (ex: 'es', 'pt', 'en')." + ) if self.max_pages < 1 or self.max_pages > 10: raise InvalidSearchQueryError("O número máximo de páginas deve estar entre 1 e 10.") @@ -123,6 +127,7 @@ class ExtractNewsUseCase: from googlenews_etl.infrastructure.adapters.google_news_extractor_adapter import ( GoogleNewsExtractorAdapter, ) + self.extractor = GoogleNewsExtractorAdapter() else: self.extractor = extractor @@ -199,7 +204,9 @@ class GoogleNewsExtractorAdapter(NewsExtractorPort): resolve_final_urls: bool = True, ) -> None: self.impersonate = impersonate - self.rate_limiter = rate_limiter or RateLimiterService(min_delay_seconds=0.5, max_delay_seconds=1.0) + self.rate_limiter = rate_limiter or RateLimiterService( + min_delay_seconds=0.5, max_delay_seconds=1.0 + ) self.url_resolver = url_resolver or PlaywrightUrlResolverAdapter() self.resolve_final_urls = resolve_final_urls self.session = requests.Session(impersonate=self.impersonate) @@ -351,8 +358,12 @@ class PlaywrightUrlResolverAdapter(UrlResolverPort): if not any( x in u for x in [ - "google.", "gstatic.", "googleapis.", "googletagmanager.", - "w3.org", "schema.org", + "google.", + "gstatic.", + "googleapis.", + "googletagmanager.", + "w3.org", + "schema.org", ] ): if not target_url or target_url == url: @@ -554,8 +565,8 @@ from googlenews_etl.application.use_cases.extract_news_use_case import ExtractNe dto_in = ExtractNewsInputDTO(keyword="inteligencia artificial", language="pt", max_pages=1) resultado = ExtractNewsUseCase().execute(dto_in) -print(resultado.total_itens) # ex: 10 -print(resultado.items[0].titulo) # título da primeira manchete -print(resultado.items[0].url) # URL final resolvida +print(resultado.total_itens) # ex: 10 +print(resultado.items[0].titulo) # título da primeira manchete +print(resultado.items[0].url) # URL final resolvida print(resultado.items[0].quando_publicado) # data crua do RSS ``` \ No newline at end of file diff --git a/docs/prd_extrator_artigos_nlp.md b/docs/prd_extrator_artigos_nlp.md new file mode 100644 index 0000000..d3b238c --- /dev/null +++ b/docs/prd_extrator_artigos_nlp.md @@ -0,0 +1,255 @@ +# PRD — Extrator e Parser de Artigos Multimotor (Foxcape + Trafilatura + Newspaper4k + Readability) + +> **Status:** Proposto / Planejamento +> **Versão:** 1.0.0 +> **Data:** 2026-08-20 +> **Autor:** Antigravity AI / DunaMedia +> **Localização:** `docs/prd_extrator_artigos_nlp.md` + +--- + +## 1. Visão Geral e Contexto + +### 1.1 Objetivo do Produto +Construir um pipeline/script autônomo e resiliente em Python para **extração profunda e enriquecimento de conteúdo de artigos de notícias** a partir de listagens JSON previamente geradas (ex.: pelo extrator do Google News). + +O pipeline utiliza o **Foxcape** em modo *headless* para acessar furtivamente as URLs finais, aguardar a renderização completa da árvore DOM e coletar o HTML íntegro. Em seguida, processa esse HTML simultaneamente através de **três motores consagrados de extração de conteúdo (NLP / Web Content Extraction)**: +1. **Trafilatura** +2. **Newspaper4k** +3. **Readability (`readability-lxml`)** + +O resultado consolidado com o máximo de informações extraídas por cada motor é exportado em formato JSON estruturado na pasta `out/`. + +--- + +## 2. Personas e Casos de Uso + +| Persona | Necessidade | Benefício | +|---|---|---| +| **Engenheiro de Dados / ETL** | Ingerir em lote o conteúdo completo de notícias a partir de arquivos JSON de busca. | Automação resiliente sem necessidade de criar parsers manuais para cada portal de notícias. | +| **Cientista de Dados / NLP** | Comparar ou combinar diferentes abordagens de extração de texto, resumos e metadados. | Obter em um único JSON os outputs estruturados de 3 extratores líderes da indústria. | +| **Operador de Terminal / Analista** | Executar o script via CLI informando o arquivo de entrada e acompanhando o progresso em tempo real. | Visibilidade clara via `stderr` sem poluir a saída JSON no `stdout`. | + +--- + +## 3. Arquitetura e Fluxo do Sistema + +```mermaid +flowchart TD + A[Arquivo JSON de Entrada\n out/river_plate.json] --> B[Script CLI / Use Case\n Carrega lista de notícias] + B --> C[Iterador de Artigos] + C --> D[Motor Foxcape Headless\n Navega até a URL final] + D --> E[Aguarda DOM carregar\n domcontentloaded / load] + E --> F[Coleta HTML Renderizado Completo] + + F --> G1[Motor 1: Trafilatura\n Texto limpo, autor, data, tags, meta] + F --> G2[Motor 2: Newspaper4k\n Artigo, autores, resumo NLP, keywords, top image] + F --> G3[Motor 3: Readability\n Miolo HTML limpo, texto limpo, título] + + G1 --> H[Agregador de Extrações] + G2 --> H + G3 --> H + + H --> I[JSON Consolidado de Saída\n out/extracted_articles_*.json] +``` + +--- + +## 4. Requisitos Funcionais (FR) + +### RF01 — Ingestão de Arquivo JSON de Notícias +- O sistema deve aceitar como entrada um arquivo JSON localizado em `out/` (ou caminho customizado via flag CLI `--input` / `-i`). +- Deve validar a presença da lista `items` e extrair as propriedades fundamentais de cada item (`url`, `titulo`, `subtitulo`, `quando_publicado`, `pagina`). +- Deve suportar opções para limitar o processamento a N itens (ex.: `--limit 5` para testes rápidos). + +### RF02 — Navegação e Coleta com Foxcape (Obrigatório) +- O acesso às páginas **deve obrigatoriamente** ser realizado com o pacote `foxcape`, aproveitando seu motor anti-bot (Camoufox + evasão de fingerprinting). +- Deve executar em modo `headless=True` por padrão (`FoxcapeConfig(headless=True, humanize=False)`). +- Deve navegar até a URL de cada notícia, aguardar o evento de carregamento do DOM (`wait_until="domcontentloaded"` com fallback para timeout) e extrair a string HTML completa e íntegra da página. +- Deve reaproveitar a mesma instância/sessão do navegador entre as requisições do lote para otimizar velocidade e consumo de memória. + +### RF03 — Extração Máxima com Trafilatura +- Para cada HTML coletado, executar o motor `trafilatura`. +- Extrair todos os campos disponíveis: + - Texto principal limpo (`raw_text` / `text`). + - Título (`title`). + - Autor(es) (`author`). + - Data de publicação (`date`). + - Descrição / Subtítulo (`description`). + - Categorias e Tags (`categories`, `tags`). + - URL canônica (`canonical_url`). + - Comentários estruturados (se disponíveis). + - Extração em formato JSON estruturado nativo do Trafilatura. + +### RF04 — Extração Máxima com Newspaper4k +- Para cada HTML coletado, instanciar `Article(url, input_html=html)`. +- Executar `parse()` e os métodos de NLP: + - Título do artigo (`title`). + - Autores (`authors`). + - Data de publicação (`publish_date`). + - Texto completo limpo (`text`). + - Resumo gerado por NLP (`summary`). + - Palavras-chave extraídas por NLP (`keywords`). + - Imagem de destaque (`top_image`) e lista de todas as imagens (`images`). + - Metadados brutos OpenGraph e Schema.org (`meta_data`). + +### RF05 — Extração com Readability (`readability-lxml`) +- Para cada HTML coletado, processar via `Document(html)`. +- Extrair: + - Título limpo (`title()` e `short_title()`). + - Conteúdo limpo em HTML sem boilerplates/anúncios (`summary()`). + - Texto limpo puro derivado do conteúdo principal. + +### RF06 — Consolidação e Exportação de Resultados +- O sistema deve agregar o resultado dos 3 extratores em um único objeto por notícia. +- Deve salvar o resultado final em formato JSON na pasta `out/` (ex.: `out/extracted_.json` ou caminho fornecido via `--output` / `-o`). +- Deve incluir metadados de execução global: + - `source_file`: caminho do JSON de entrada. + - `processed_at`: timestamp ISO 8601 da execução. + - `total_articles`: quantidade de artigos no arquivo de entrada. + - `successful_articles`: quantidade processada com sucesso. + - `failed_articles`: quantidade com falha. + - `articles`: array com os objetos consolidados. + +### RF07 — Interface de Linha de Comando (CLI) e Logs em Tempo Real +- Disponibilizar interface CLI: + ```bash + python scripts/extract_article_contents.py -i out/river_plate.json -o out/river_plate_extracted.json + ``` +- Flags suportadas: + - `-i, --input`: Caminho do arquivo JSON de entrada (obrigatório). + - `-o, --output`: Caminho do arquivo JSON de saída (opcional, padrão: `out/extracted_.json`). + - `-l, --limit`: Limitar quantidade de artigos processados (opcional). + - `-t, --timeout`: Timeout em segundos por página no Foxcape (padrão: 30s). + - `-s, --silent`: Suprime logs visuais no `stderr`. +- Logs informativos enviados para `sys.stderr` com emojis e timestamps: + - `[INFO] 🚀 Iniciando extração de N artigos a partir de ...` + - `[INFO] 🌐 [1/10] Foxcape navegando: https://...` + - `[INFO] ⚙️ [1/10] Processando extratores (Trafilatura, Newspaper4k, Readability)...` + - `[INFO] ✅ [1/10] Concluído com sucesso!` + - `[INFO] 💾 Salvo com sucesso em: out/...` + +### RF08 — Tolerância a Falhas e Resiliência +- Se o acesso a uma URL falhar (ex.: timeout, 404, bloqueio severo), registrar o erro no item individual (`status: "failed"`, `error_message: "..."`) e prosseguir imediatamente para a próxima notícia do lote. +- Se um dos 3 extratores falhar em um HTML específico, os outros 2 extratores devem continuar operando normalmente, registrando o erro no campo correspondente ao motor que falhou. + +--- + +## 5. Requisitos Não Funcionais (NFR) + +| ID | Requisito | Critério | +|---|---|---| +| **RNF01** | **Furtividade Anti-Bot** | Utilizar Foxcape/Camoufox para evitar bloqueios de TLS/JA3 e Cloudflare. | +| **RNF02** | **Eficiência de Recursos** | Manter instância persistente do navegador aberta em lote em vez de instanciar/fechar o browser a cada URL. | +| **RNF03** | **Segregação de Streams** | `sys.stderr` exclusivo para logs; `sys.stdout` reservado para output JSON caso não seja especificado arquivo. | +| **RNF04** | **Modularidade** | Código estruturado em classes/módulos independentes para cada extrator (`TrafilaturaExtractor`, `NewspaperExtractor`, `ReadabilityExtractor`). | +| **RNF05** | **Compatibilidade de Plataforma** | Totalmente funcional em Windows, Linux e macOS (Python 3.10+). | + +--- + +## 6. Esquema de Dados (Contratos de Interface) + +### 6.1 Esquema do JSON de Entrada (`Input`) +```json +{ + "query": "River Plate", + "language": "es", + "locale": "AR", + "total_paginas": 1, + "total_itens": 2, + "scraped_at": "2026-08-20T14:37:38.233557+00:00", + "items": [ + { + "titulo": "Los puntajes de River vs. Independiente Santa Fe", + "subtitulo": "River empató sem gols...", + "quando_publicado": "Thu, 20 Aug 2026 03:27:26 GMT", + "url": "https://www.tycsports.com/river-plate/los-puntajes-id755914.html", + "pagina": 1 + } + ] +} +``` + +### 6.2 Esquema do JSON Consolidado de Saída (`Output`) +```json +{ + "source_file": "out/river_plate.json", + "processed_at": "2026-08-20T15:00:00.000000+00:00", + "total_articles": 1, + "successful_articles": 1, + "failed_articles": 0, + "articles": [ + { + "input_meta": { + "titulo_original": "Los puntajes de River vs. Independiente Santa Fe", + "subtitulo_original": "River empató sem gols...", + "quando_publicado": "Thu, 20 Aug 2026 03:27:26 GMT", + "url_original": "https://www.tycsports.com/river-plate/los-puntajes-id755914.html", + "pagina": 1 + }, + "extraction_status": "success", + "error_message": null, + "crawled_url": "https://www.tycsports.com/river-plate/los-puntajes-id755914.html", + "page_title": "Los puntajes de River...", + "http_status": 200, + "trafilatura": { + "title": "Los puntajes de River vs. Independiente Santa Fe...", + "author": "Ernesto Provitilo", + "date": "2026-08-20", + "description": "El análisis uno por uno...", + "categories": ["River Plate", "Copa Sudamericana"], + "tags": ["River", "Santa Fe"], + "canonical_url": "https://www.tycsports.com/...", + "text": "Franco Armani (6): Seguro en las pocas llegadas...", + "raw_json": {} + }, + "newspaper4k": { + "title": "Los puntajes de River vs. Independiente Santa Fe", + "authors": ["Ernesto Provitilo"], + "publish_date": "2026-08-20T03:27:26", + "text": "Franco Armani (6): Seguro en las pocas llegadas...", + "summary": "Resumo gerado por NLP do newspaper...", + "keywords": ["river", "santa fe", "puntajes", "armani"], + "top_image": "https://media.tycsports.com/...", + "images": ["https://media.tycsports.com/..."], + "meta_data": {} + }, + "readability": { + "title": "Los puntajes de River vs. Independiente Santa Fe", + "short_title": "Los puntajes de River", + "cleaned_html": "

Franco Armani (6)...

", + "cleaned_text": "Franco Armani (6): Seguro en las pocas llegadas..." + } + } + ] +} +``` + +--- + +## 7. Dependências do Projeto + +As seguintes bibliotecas Python são necessárias para viabilizar este PRD: + +```toml +[dependencies] +foxcape = ">=0.1.1" +trafilatura = ">=1.8.0" +newspaper4k = ">=0.9.3" +readability-lxml = ">=0.8.1" +beautifulsoup4 = ">=4.12.0" +lxml = ">=4.9.0" +``` + +--- + +## 8. Critérios de Aceite + +1. **Execução de ponta a ponta**: Executar o script apontando para `out/river_plate.json` e gerar com sucesso `out/river_plate_extracted.json`. +2. **Uso Mandatório do Foxcape**: Todas as páginas HTML devem ser renderizadas e baixadas via Foxcape headless. +3. **Completude das Extrações**: + - O objeto `trafilatura` deve conter título, autor, data e texto limpo. + - O objeto `newspaper4k` deve conter NLP summary, keywords, top_image e texto limpo. + - O objeto `readability` deve conter HTML limpo e texto limpo. +4. **Resiliência a Falhas**: Artigos com falha de conexão não devem quebrar o script e devem vir identificados como `extraction_status: "failed"`. +5. **Logs Informativos**: O operador visualiza no terminal o progresso item a item através do `stderr`. diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index 7d8c2ea..92d2d95 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -44,10 +44,10 @@ "42": "1. Input Schemas", "43": "2. Basic CLI Usage Examples", "44": "2. Standard Streams & Exit Codes", - "45": "ClassificationResult", + "45": "classifier.py", "46": "InherenceClassifier", "47": "detect_language", - "48": "test_models.py", + "48": "ClassificationError", "49": "content_northvolt_de.md", "50": "content_presal_pt.md", "51": "content_tangential_es.md", @@ -79,7 +79,7 @@ "77": "pt/tangential.md", "78": "tests/__init__.py", "79": "text-nlp-classifier", - "80": "get_hl_gl_ceid", + "80": "test_extract_article_contents.py", "81": "Extrator de Notícias do Google News — Guia Completo de Funcionamento", "82": "extract_google_news.py", "83": "ExtractionResult", @@ -97,10 +97,21 @@ "95": "CLI Contract: Google News Headlines Extractor", "96": "readiness.md", "97": "🧠 TextNLPClassifierApp", - "98": "build_parser", + "98": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", "99": "sample_rss_xml", - "100": "classifier.py", + "100": "main", "101": "ECPSnapshot", "102": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "103": "main" + "103": "4. Requisitos Funcionais (FR)", + "104": "Tasks: Article Content Multi-Engine Extractor", + "105": "models.py", + "106": "Implementation Plan: Article Content Multi-Engine Extractor", + "107": "2. Cenários de Validação", + "108": "1. Technical Decisions & Tradeoffs", + "109": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "110": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "111": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "112": "CLI Contract: Article Content Multi-Engine Extractor", + "113": "001-multilingual-entity-classifier/spec.md", + "114": "JSON Schema Contract: Article Content Multi-Engine Extractor" } diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig index bdce33f..591854a 100644 --- a/graphify-out/.graphify_labels.json.sig +++ b/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "b5952a1f7fee9f20", "5": "b493e66e33005daa", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9", "40": "62a40bb7296050db", "41": "0322ff824966a4d8", "42": "784c9e3d336a7f53", "43": "4b8bb6c3f7b64856", "44": "18c0ff3e6225bcb2", "45": "0172259097d0974e", "46": "d2ae82bc1907fef3", "47": "7be46d99756bf41e", "48": "a94841cd5849d3f5", "49": "0d0f9f015921feef", "50": "8d0c81e5ca23e9a6", "51": "f79963571b9c15ee", "52": "5935824c825606cb", "53": "9685f9cbe158e50b", "54": "3d5ab759f350bc79", "55": "d549f24931a990e9", "56": "3cc031dcb648797c", "57": "a0ab88e6c629251d", "58": "76bd6412e2a22ecd", "59": "54827845564490c9", "60": "0a9736c416c0c6b9", "61": "77358620ac528153", "62": "3b0c585df09df48a", "63": "7e78cd3b28828c20", "64": "1c0c958231735f61", "65": "60b0f81225f62f69", "66": "920754c65cc94b88", "67": "df911472140a9b94", "68": "8e17bc11bcea91b9", "69": "7e905b75e4f28b95", "70": "a28424eca5d36c55", "71": "2cdb53d5b6051ab6", "72": "e42fbd3dc744e730", "73": "7fe2cac980de160c", "74": "2b1343a6a9db1487", "75": "54a1bb232f1d4ceb", "76": "442ba11d31ec0e0a", "77": "852a25b8b95bf8d1", "78": "1810ab370b9cd608", "79": "0fc5dca02a3f02f6", "80": "10ea6ef8e60efb58", "81": "a38f84ae3d895236", "82": "5efe702565242e04", "83": "f74492db7d32ba1e", "84": "c0d4860b83f7cb84", "85": "f8bfd0cfe9e8b478", "86": "410d15a346bd5894", "87": "6b41d288cfd834ab", "88": "5aa6db96312a8811", "89": "80225792bb62ba04", "90": "e553a45aca39b563", "91": "d4579c5b7aa2742a", "92": "7b9ba7c3bff11361", "93": "71cd9c1fa4a857f0", "94": "34cd980be3c32d21", "95": "970093453f3b7d90", "96": "9e96780a2b7c4bd6", "97": "3befc42bd6078583", "98": "32f0d209b4ebd09b", "99": "8968e9e7d55afcbe", "100": "c14800d0ab2e5026", "101": "d7e7752d280777b1", "102": "6aa00d5a83295f11", "103": "cbb35e88e6b7e1ac"} \ No newline at end of file +{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "b5952a1f7fee9f20", "5": "5b8462a3f82d188c", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9", "40": "66b69189c0acc3ff", "41": "0322ff824966a4d8", "42": "784c9e3d336a7f53", "43": "4b8bb6c3f7b64856", "44": "18c0ff3e6225bcb2", "45": "70b30e0a139bbd59", "46": "58f3596265f5f902", "47": "f89e819a4cc2d299", "48": "b45478cb1443df68", "49": "0d0f9f015921feef", "50": "8d0c81e5ca23e9a6", "51": "f79963571b9c15ee", "52": "5935824c825606cb", "53": "9685f9cbe158e50b", "54": "3d5ab759f350bc79", "55": "d549f24931a990e9", "56": "3cc031dcb648797c", "57": "a0ab88e6c629251d", "58": "76bd6412e2a22ecd", "59": "54827845564490c9", "60": "0a9736c416c0c6b9", "61": "77358620ac528153", "62": "3b0c585df09df48a", "63": "7e78cd3b28828c20", "64": "1c0c958231735f61", "65": "60b0f81225f62f69", "66": "920754c65cc94b88", "67": "df911472140a9b94", "68": "8e17bc11bcea91b9", "69": "7e905b75e4f28b95", "70": "a28424eca5d36c55", "71": "2cdb53d5b6051ab6", "72": "e42fbd3dc744e730", "73": "7fe2cac980de160c", "74": "2b1343a6a9db1487", "75": "54a1bb232f1d4ceb", "76": "442ba11d31ec0e0a", "77": "852a25b8b95bf8d1", "78": "1810ab370b9cd608", "79": "0fc5dca02a3f02f6", "80": "6ff8a97e63c9a2f3", "81": "a38f84ae3d895236", "82": "08e48bd11f9714df", "83": "5095122914e83cf5", "84": "1aef305bd7d7d63f", "85": "f8bfd0cfe9e8b478", "86": "410d15a346bd5894", "87": "6b41d288cfd834ab", "88": "5aa6db96312a8811", "89": "80225792bb62ba04", "90": "fd291228c3311f40", "91": "d4579c5b7aa2742a", "92": "7b9ba7c3bff11361", "93": "71cd9c1fa4a857f0", "94": "34cd980be3c32d21", "95": "970093453f3b7d90", "96": "9e96780a2b7c4bd6", "97": "a4e57776e229c794", "98": "089ea6a55861c693", "99": "8968e9e7d55afcbe", "100": "daa6156e559cda08", "101": "14e5b6323d34c337", "102": "6aa00d5a83295f11", "103": "f58668f5b10ccdeb", "104": "4ec787414cc6f50b", "105": "de672873b6dec6e2", "106": "edcd5d9bb3c4b00f", "107": "37f2f47110fe3eaa", "108": "b7ad5abb1da8cf8d", "109": "cb48a9c4f54efa38", "110": "f6dd36fd7f3edbe5", "111": "2925b620f0b1fd17", "112": "d8b3099917c3b711", "113": "3bb61caa0302c804", "114": "0d4f1d08dd056bb9"} \ No newline at end of file diff --git a/graphify-out/2026-08-20/.graphify_labels.json b/graphify-out/2026-08-20/.graphify_labels.json index 6872f15..75af693 100644 --- a/graphify-out/2026-08-20/.graphify_labels.json +++ b/graphify-out/2026-08-20/.graphify_labels.json @@ -4,7 +4,7 @@ "2": "SpecKit Utilities", "3": "Graphify Commands", "4": "speckit-analyze/SKILL.md", - "5": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "5": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "6": "Feature Specification Template", "7": "Graphify Rules", "8": "Implementation Planning", @@ -44,10 +44,10 @@ "42": "1. Input Schemas", "43": "2. Basic CLI Usage Examples", "44": "2. Standard Streams & Exit Codes", - "45": "ECPSnapshot", - "46": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "45": "LocalEmbeddingsAdapter", + "46": "InherenceClassifier", "47": "detect_language", - "48": "test_models.py", + "48": "classifier.py", "49": "content_northvolt_de.md", "50": "content_presal_pt.md", "51": "content_tangential_es.md", @@ -79,7 +79,7 @@ "77": "pt/tangential.md", "78": "tests/__init__.py", "79": "text-nlp-classifier", - "80": "get_hl_gl_ceid", + "80": "test_extract_article_contents.py", "81": "Extrator de Notícias do Google News — Guia Completo de Funcionamento", "82": "extract_google_news.py", "83": "ExtractionResult", @@ -96,6 +96,22 @@ "94": "Specification Quality Checklist: Google News Headlines Extractor", "95": "CLI Contract: Google News Headlines Extractor", "96": "readiness.md", - "98": "build_parser", - "99": "sample_rss_xml" + "97": "🧠 TextNLPClassifierApp", + "98": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "99": "sample_rss_xml", + "100": "models.py", + "101": "ECPSnapshot", + "102": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "103": "4. Requisitos Funcionais (FR)", + "104": "Tasks: Article Content Multi-Engine Extractor", + "105": "ClassificationResult", + "106": "Implementation Plan: Article Content Multi-Engine Extractor", + "107": "2. Cenários de Validação", + "108": "1. Technical Decisions & Tradeoffs", + "109": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "110": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "111": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "112": "CLI Contract: Article Content Multi-Engine Extractor", + "113": "001-multilingual-entity-classifier/spec.md", + "114": "JSON Schema Contract: Article Content Multi-Engine Extractor" } diff --git a/graphify-out/2026-08-20/GRAPH_REPORT.md b/graphify-out/2026-08-20/GRAPH_REPORT.md index 96b1799..9a69b86 100644 --- a/graphify-out/2026-08-20/GRAPH_REPORT.md +++ b/graphify-out/2026-08-20/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - TextNLPClassifierApp (2026-08-20) ## Corpus Check -- 147 files · ~65,826 words +- 161 files · ~78,476 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 775 nodes · 931 edges · 99 communities (61 shown, 38 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 36 edges (avg confidence: 0.94) +- 1000 nodes · 1226 edges · 115 communities (77 shown, 38 thin omitted) +- Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 39 edges (avg confidence: 0.95) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `67cc40f9` +- Built from commit: `6e3d5761` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -20,7 +20,7 @@ - SpecKit Utilities - Graphify Commands - speckit-analyze/SKILL.md -- POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier +- Tasks: Multilingual NLP Entity Inherence Classifier (POC) - Feature Specification Template - Graphify Rules - Implementation Planning @@ -56,10 +56,10 @@ - 1. Input Schemas - 2. Basic CLI Usage Examples - 2. Standard Streams & Exit Codes -- ECPSnapshot -- Tasks: Multilingual NLP Entity Inherence Classifier (POC) +- LocalEmbeddingsAdapter +- InherenceClassifier - detect_language -- test_models.py +- classifier.py - content_northvolt_de.md - content_presal_pt.md - content_tangential_es.md @@ -91,7 +91,7 @@ - pt/tangential.md - tests/__init__.py - text-nlp-classifier -- get_hl_gl_ceid +- test_extract_article_contents.py - Extrator de Notícias do Google News — Guia Completo de Funcionamento - extract_google_news.py - ExtractionResult @@ -107,37 +107,52 @@ - 1. Entidades de Domínio & DTOs - Specification Quality Checklist: Google News Headlines Extractor - CLI Contract: Google News Headlines Extractor -- build_parser +- 🧠 TextNLPClassifierApp +- Extraction Pipeline Checklist: Article Content Multi-Engine Extractor - sample_rss_xml +- models.py +- ECPSnapshot +- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) +- 4. Requisitos Funcionais (FR) +- Tasks: Article Content Multi-Engine Extractor +- ClassificationResult +- Implementation Plan: Article Content Multi-Engine Extractor +- 2. Cenários de Validação +- 1. Technical Decisions & Tradeoffs +- Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC) +- POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier +- Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier +- CLI Contract: Article Content Multi-Engine Extractor +- JSON Schema Contract: Article Content Multi-Engine Extractor ## God Nodes (most connected - your core abstractions) 1. `ECPSnapshot` - 31 edges 2. `InherenceClassifier` - 25 edges 3. `DecisionCategory` - 18 edges 4. `ClassificationResult` - 17 edges -5. `main()` - 14 edges +5. `process_batch()` - 15 edges 6. `LocalEmbeddingsAdapter` - 14 edges 7. `LLMFallbackAdapter` - 14 edges 8. `detect_language()` - 14 edges -9. `Tasks: [FEATURE NAME]` - 13 edges -10. `SearchQuery` - 12 edges +9. `main()` - 13 edges +10. `ArticleCrawler` - 13 edges ## Surprising Connections (you probably didn't know these) - `main()` --uses--> `ECPSnapshot` [INFERRED] classify.py → src/models.py - `test_extract_google_news_orchestration_mocked()` --uses--> `ExtractionResult` [INFERRED] tests/test_extract_google_news.py → scripts/extract_google_news.py +- `classifier()` --uses--> `InherenceClassifier` [INFERRED] + tests/test_benchmark_24.py → src/classifier.py - `test_classification_result_serialization()` --uses--> `DecisionCategory` [INFERRED] tests/test_models.py → src/models.py -- `test_ecp_snapshot_defaults()` --uses--> `ECPSnapshot` [INFERRED] - tests/test_models.py → src/models.py -- `test_ecp_snapshot_missing_required()` --uses--> `ECPSnapshot` [INFERRED] - tests/test_models.py → src/models.py +- `petrobras_ecp()` --uses--> `ECPSnapshot` [INFERRED] + tests/test_classifier.py → src/models.py ## Import Cycles - None detected. -## Communities (99 total, 38 thin omitted) +## Communities (115 total, 38 thin omitted) ### Community 0 - "Task Planning" Cohesion: 0.07 @@ -159,9 +174,9 @@ Nodes (24): For /graphify add and --watch, For /graphify query, For the commit h Cohesion: 0.08 Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more) -### Community 5 - "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier" -Cohesion: 0.05 -Nodes (34): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+26 more) +### Community 5 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.15 +Nodes (13): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP] (+5 more) ### Community 6 - "Feature Specification Template" Cohesion: 0.15 @@ -260,8 +275,8 @@ Cohesion: 0.50 Nodes (3): Boundaries, Output, Scan ### Community 40 - "main" -Cohesion: 0.19 -Nodes (14): CaptureFixture, Path, main(), Ponto de entrada do script CLI., Valida execução padrão do CLI com saída JSON no stdout., Valida gravação em arquivo com criação automática de diretórios pais., Valida tratamento de erro e código de saída 1 para parâmetro vazio., Valida tratamento de erro e código de saída 2 para falhas de rede. (+6 more) +Cohesion: 0.14 +Nodes (17): ArgumentParser, CaptureFixture, build_parser(), main(), Cria e configura o parser de argumentos CLI., Ponto de entrada do script CLI., Path, Valida execução padrão do CLI com saída JSON no stdout. (+9 more) ### Community 41 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 @@ -279,41 +294,41 @@ Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2 Cohesion: 0.29 Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC) -### Community 45 - "ECPSnapshot" -Cohesion: 0.06 -Nodes (55): ABC, Enum, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+47 more) +### Community 45 - "LocalEmbeddingsAdapter" +Cohesion: 0.14 +Nodes (8): LocalEmbeddingsAdapter, Optional adapter for local multilingual semantic vector embeddings., LLMFallbackAdapter, Optional adapter for LLM fallback boundary disambiguation., Unit tests for optional adapter interfaces (Tier 2 / Tier 3)., test_classifier_with_adapter_flags(), test_embeddings_adapter_interface(), test_llm_adapter_interface() -### Community 46 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)" -Cohesion: 0.15 -Nodes (13): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP] (+5 more) +### Community 46 - "InherenceClassifier" +Cohesion: 0.12 +Nodes (27): InherenceClassifier, Tier 1 Deterministic NLP Entity Inherence Classifier., DecisionCategory, RelatedEntity, Adversarial and robustness test suite for Multilingual NLP Entity Inherence…, Run CLI via subprocess with empty content and verify error code and exit code., Content about city/state governance of São Paulo against ECP for São Paulo FC., Run CLI via subprocess with missing target_name and verify error payload. (+19 more) ### Community 47 - "detect_language" Cohesion: 0.14 Nodes (21): count_phrase_occurrences(), match_phrase_in_text(), Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text., Classify inherence of content against an ECP snapshot., detect_language(), extract_words(), normalize_text() (+13 more) -### Community 48 - "test_models.py" -Cohesion: 0.09 -Nodes (29): emit_error(), main(), parse_args(), Namespace, ClassificationError, ErrorCode, Any, extract_evidence_snippets() (+21 more) +### Community 48 - "classifier.py" +Cohesion: 0.24 +Nodes (11): Core deterministic classification engine (Tier 1 core)., extract_evidence_snippets(), extract_sentences(), Markdown content parser and excerpt extraction utilities., Remove markdown syntax markers (headers, bold, italics, links, code blocks) to…, Split text into individual sentences., Extract relevant sentence excerpts from Markdown text that contain any of the…, strip_markdown() (+3 more) -### Community 80 - "get_hl_gl_ceid" -Cohesion: 0.25 -Nodes (8): get_hl_gl_ceid(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado., Valida fallback dinâmico para idiomas regionais não listados explicitamente., test_get_hl_gl_ceid_default_mappings(), test_get_hl_gl_ceid_dynamic_fallback(), test_get_hl_gl_ceid_with_custom_locale() +### Community 80 - "test_extract_article_contents.py" +Cohesion: 0.06 +Nodes (56): ArticleCrawler, extract_all_engines(), ExtractedArticle, ExtractionBatchReport, InputArticle, load_search_json(), log_info(), main() (+48 more) ### Community 81 - "Extrator de Notícias do Google News — Guia Completo de Funcionamento" Cohesion: 0.08 Nodes (24): 1. Visão geral (arquitetura), 2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`), 2.2 Value Object de validação (`googlenews_etl/domain/entities/search_query.py`), 2. Entrada, 3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`), 3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`), 3.3.1 Inicialização: sessão HTTP com impersonação de browser, 3.3.2 Mapeamento idioma → parâmetros `hl`/`gl` (`_get_hl_gl`) (+16 more) ### Community 82 - "extract_google_news.py" -Cohesion: 0.20 -Nodes (14): extract_google_news(), _fetch_rss_content(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Remove pontuação e espaços extras para comparação de redundância., Parseia o XML do RSS do Google News e extrai os itens estruturados., Resolve em paralelo as URLs intermediárias do Google News para os links finais… (+6 more) +Cohesion: 0.15 +Nodes (18): extract_google_news(), _fetch_rss_content(), get_hl_gl_ceid(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Remove pontuação e espaços extras para comparação de redundância. (+10 more) ### Community 83 - "ExtractionResult" Cohesion: 0.29 Nodes (5): ExtractionResult, Any, Resultado consolidado da extração., Valida E2E o fluxo completo de busca, parsing e resolução de URLs reais ao vivo., test_e2e_extract_google_news_live_pipeline() ### Community 84 - "test_extract_google_news.py" -Cohesion: 0.21 -Nodes (11): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida o parsing do feed RSS, higienização de tags HTML e deduplicação., Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, test_e2e_resolve_real_google_news_url() (+3 more) +Cohesion: 0.15 +Nodes (15): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado. (+7 more) ### Community 85 - "Implementation Tasks: Google News Headlines Extractor" Cohesion: 0.14 @@ -355,28 +370,88 @@ Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Cohesion: 0.33 Nodes (6): 1. Comando e Argumentos, 2. Códigos de Saída (Exit Codes), 3. Protocolo de Streams (Stdout / Stderr), Argumentos de Linha de Comando, CLI Contract: Google News Headlines Extractor, Sintaxe -### Community 98 - "build_parser" -Cohesion: 0.67 -Nodes (3): ArgumentParser, build_parser(), Cria e configura o parser de argumentos CLI. +### Community 97 - "🧠 TextNLPClassifierApp" +Cohesion: 0.06 +Nodes (33): 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP), 1. Clonar o Repositório e Criar Ambiente Virtual, 1. Extração Completa Automática, 1. River Plate (Argentina / Espanhol / 2 Páginas / Salvar em Arquivo), 2. Amostragem Rápida (Limit 2 Notícias), 2. Cruzeiro (Brasil / Português / Formatado no Terminal), 2. 📰 Extrator de Manchetes do Google News, 2. Instalar Dependências (+25 more) + +### Community 98 - "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor" +Cohesion: 0.05 +Nodes (34): 1. Requirement Completeness, 2. Requirement Clarity & Non-Ambiguity, 3. Requirement Consistency & Data Contracts, 4. Scenario & Edge Case Coverage, 5. Non-Functional & Operational Readiness, Extraction Pipeline Checklist: Article Content Multi-Engine Extractor, Notes, Content Quality (+26 more) ### Community 99 - "sample_rss_xml" Cohesion: 0.67 Nodes (3): fixture, Fixture que fornece o conteúdo do XML de exemplo para testes offline., sample_rss_xml() +### Community 100 - "models.py" +Cohesion: 0.15 +Nodes (17): emit_error(), main(), parse_args(), Namespace, Enum, ClassificationError, ErrorCode, MatchedGraphEntity (+9 more) + +### Community 101 - "ECPSnapshot" +Cohesion: 0.22 +Nodes (10): parametrize, ECPSnapshot, Any, classifier(), fixture, Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence…, test_benchmark_case(), test_ecp_snapshot_defaults() (+2 more) + +### Community 102 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.14 +Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more) + +### Community 103 - "4. Requisitos Funcionais (FR)" +Cohesion: 0.10 +Nodes (20): 1.1 Objetivo do Produto, 1. Visão Geral e Contexto, 2. Personas e Casos de Uso, 3. Arquitetura e Fluxo do Sistema, 4. Requisitos Funcionais (FR), 5. Requisitos Não Funcionais (NFR), 6.1 Esquema do JSON de Entrada (`Input`), 6.2 Esquema do JSON Consolidado de Saída (`Output`) (+12 more) + +### Community 104 - "Tasks: Article Content Multi-Engine Extractor" +Cohesion: 0.11 +Nodes (18): Dependencies & Execution Order, Entrega Incremental, Implementation Strategy, Implementação da User Story 1, Implementação da User Story 2, Implementação da User Story 3, MVP First (User Story 1 Only), Oportunidades de Execução Paralela (+10 more) + +### Community 105 - "ClassificationResult" +Cohesion: 0.16 +Nodes (11): ABC, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms., Optionally refine an ambiguous classification result., Optional local vector embeddings adapter (Tier 2). Disabled by default.… (+3 more) + +### Community 106 - "Implementation Plan: Article Content Multi-Engine Extractor" +Cohesion: 0.17 +Nodes (11): Constitution Check, Documentation (this feature), Implementation Phases, Implementation Plan: Article Content Multi-Engine Extractor, Phase 0: Outline & Research *(Completed)*, Phase 1: Design & Contracts *(Completed)*, Phase 2: Tasks & Execution *(Next: `/speckit-tasks`)*, Project Structure (+3 more) + +### Community 107 - "2. Cenários de Validação" +Cohesion: 0.22 +Nodes (8): 1. Pré-requisitos, 2. Cenários de Validação, 3. Validação Automatizada de Testes, Cenário 1: Extração com Amostragem Rápida (Limit 2), Cenário 2: Caminho Customizado de Saída, Cenário 3: Modo Silencioso (`--silent`), Cenário 4: Resiliência contra URLs Inválidas, Quickstart & Validation Guide: Article Content Multi-Engine Extractor + +### Community 108 - "1. Technical Decisions & Tradeoffs" +Cohesion: 0.22 +Nodes (8): 1. Technical Decisions & Tradeoffs, Decision 1: Motor de Navegação e Renderização com `foxcape` em Sessão Única, Decision 2: Orquestração Tripla de Extração de Conteúdo (NLP & Web Scraping), Decision 3: Resiliência e Isolamento de Falhas por Camada, Decision 4: Herança Inteligente de Idioma para NLP, Decision 5: Gerenciamento de Memória e Descarte do Raw HTML, Decision 6: Segregação de Streams e Feedback Visual em `stderr`, Research: Article Content Multi-Engine Extractor + +### Community 109 - "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.25 +Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC), Project Structure, Source Code (repository root), Summary, Technical Context + +### Community 110 - "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier" +Cohesion: 0.29 +Nodes (7): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier + +### Community 111 - "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier" +Cohesion: 0.33 +Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier + +### Community 112 - "CLI Contract: Article Content Multi-Engine Extractor" +Cohesion: 0.33 +Nodes (5): 1. Comando de Execução, 2. Argumentos e Flags, 3. Códigos de Saída (Exit Codes), 4. Comportamento de Streams (I/O), CLI Contract: Article Content Multi-Engine Extractor + +### Community 114 - "JSON Schema Contract: Article Content Multi-Engine Extractor" +Cohesion: 0.50 +Nodes (3): 1. Schema de Entrada (Input JSON), 2. Schema de Saída (Output JSON), JSON Schema Contract: Article Content Multi-Engine Extractor + ## Knowledge Gaps -- **361 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+356 more) +- **465 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+460 more) These have ≤1 connection - possible missing edges or undocumented components. - **38 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `main()` connect `test_models.py` to `main`, `ECPSnapshot`?** - _High betweenness centrality (0.031) - this node is a cross-community bridge._ -- **Why does `ECPSnapshot` connect `ECPSnapshot` to `test_models.py`, `detect_language`?** - _High betweenness centrality (0.021) - this node is a cross-community bridge._ -- **Why does `main()` connect `main` to `extract_google_news.py`, `test_extract_google_news.py`, `SearchQuery`, `build_parser`?** - _High betweenness centrality (0.021) - this node is a cross-community bridge._ +- **Why does `ECPSnapshot` connect `ECPSnapshot` to `models.py`, `ClassificationResult`, `LocalEmbeddingsAdapter`, `InherenceClassifier`, `detect_language`, `classifier.py`?** + _High betweenness centrality (0.005) - this node is a cross-community bridge._ +- **Why does `InherenceClassifier` connect `InherenceClassifier` to `models.py`, `ECPSnapshot`, `ClassificationResult`, `LocalEmbeddingsAdapter`, `detect_language`, `classifier.py`?** + _High betweenness centrality (0.003) - this node is a cross-community bridge._ +- **Why does `detect_language()` connect `detect_language` to `classifier.py`?** + _High betweenness centrality (0.003) - this node is a cross-community bridge._ - **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?** _`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._ - **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?** diff --git a/graphify-out/2026-08-20/graph.json b/graphify-out/2026-08-20/graph.json index 477cc85..47f9ba9 100644 --- a/graphify-out/2026-08-20/graph.json +++ b/graphify-out/2026-08-20/graph.json @@ -3,19 +3,84 @@ "multigraph": false, "graph": {}, "nodes": [ + { + "id": "src_models_classificationerror", + "label": "ClassificationError", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "classificationerror", + "source_file": "src/models.py", + "source_location": "L153" + }, + { + "id": "src_models_errorcode", + "label": "ErrorCode", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "errorcode", + "source_file": "src/models.py", + "source_location": "L18" + }, + { + "id": "src_models_matchedgraphentity", + "label": "MatchedGraphEntity", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "matchedgraphentity", + "source_file": "src/models.py", + "source_location": "L114" + }, + { + "id": "src_models_ecpsnapshot", + "label": "ECPSnapshot", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "ecpsnapshot", + "source_file": "src/models.py", + "source_location": "L58" + }, { "id": "src_adapters_base_basenlpadapter", "label": "BaseNLPAdapter", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 105, + "community_name": "ClassificationResult", "file_type": "code", "norm_label": "basenlpadapter", "source_file": "src/adapters/base.py", "source_location": "L10" }, + { + "id": "src_models_classificationresult", + "label": "ClassificationResult", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "classificationresult", + "source_file": "src/models.py", + "source_location": "L122" + }, { "id": "src_adapters_embeddings_localembeddingsadapter", "label": "LocalEmbeddingsAdapter", @@ -23,7 +88,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "localembeddingsadapter", "source_file": "src/adapters/embeddings.py", @@ -36,7 +101,7 @@ "_callable_class": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "llmfallbackadapter", "source_file": "src/adapters/llm.py", @@ -48,103 +113,168 @@ "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "inherenceclassifier", "source_file": "src/classifier.py", "source_location": "L44" }, - { - "id": "src_models_classificationresult", - "label": "ClassificationResult", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "classificationresult", - "source_file": "src/models.py", - "source_location": "L122" - }, { "id": "src_models_decisioncategory", "label": "DecisionCategory", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "decisioncategory", "source_file": "src/models.py", "source_location": "L11" }, - { - "id": "src_models_ecpsnapshot", - "label": "ECPSnapshot", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "ecpsnapshot", - "source_file": "src/models.py", - "source_location": "L58" - }, - { - "id": "src_models_matchedgraphentity", - "label": "MatchedGraphEntity", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "matchedgraphentity", - "source_file": "src/models.py", - "source_location": "L114" - }, { "id": "src_models_relatedentity", "label": "RelatedEntity", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "relatedentity", "source_file": "src/models.py", "source_location": "L27" }, { - "id": "src_models_classificationerror", - "label": "ClassificationError", + "id": "scripts_extract_article_contents_articlecrawler", + "label": "ArticleCrawler", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 48, - "community_name": "test_models.py", + "community": 80, + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "classificationerror", - "source_file": "src/models.py", - "source_location": "L153" + "norm_label": "articlecrawler", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L458" }, { - "id": "src_models_errorcode", - "label": "ErrorCode", + "id": "scripts_extract_article_contents_extractedarticle", + "label": "ExtractedArticle", "_callable": true, "_callable_class": true, "_origin": "ast", - "community": 48, - "community_name": "test_models.py", + "community": 80, + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "errorcode", - "source_file": "src/models.py", - "source_location": "L18" + "norm_label": "extractedarticle", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L177" + }, + { + "id": "scripts_extract_article_contents_extractionbatchreport", + "label": "ExtractionBatchReport", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "extractionbatchreport", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L205" + }, + { + "id": "scripts_extract_article_contents_inputarticle", + "label": "InputArticle", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "inputarticle", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L37" + }, + { + "id": "scripts_extract_article_contents_newspaperdata", + "label": "NewspaperData", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "newspaperdata", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L105" + }, + { + "id": "scripts_extract_article_contents_newspaperextractor", + "label": "NewspaperExtractor", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "newspaperextractor", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L310" + }, + { + "id": "scripts_extract_article_contents_readabilitydata", + "label": "ReadabilityData", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "readabilitydata", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L155" + }, + { + "id": "scripts_extract_article_contents_readabilityextractor", + "label": "ReadabilityExtractor", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "readabilityextractor", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L371" + }, + { + "id": "scripts_extract_article_contents_trafilaturadata", + "label": "TrafilaturaData", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "trafilaturadata", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L57" + }, + { + "id": "scripts_extract_article_contents_trafilaturaextractor", + "label": "TrafilaturaExtractor", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "trafilaturaextractor", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L231" }, { "id": "scripts_extract_google_news_newsarticle", @@ -185,6 +315,318 @@ "source_file": "scripts/extract_google_news.py", "source_location": "L32" }, + { + "id": "classify_emit_error", + "label": "emit_error()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "emit_error()", + "source_file": "classify.py", + "source_location": "L73" + }, + { + "id": "classify_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "main()", + "source_file": "classify.py", + "source_location": "L98" + }, + { + "id": "classify_parse_args", + "label": "parse_args()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "parse_args()", + "source_file": "classify.py", + "source_location": "L28" + }, + { + "id": "src_models_classificationerror_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "src/models.py", + "source_location": "L158" + }, + { + "id": "src_models_classificationerror_to_json_str", + "label": ".to_json_str()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L165" + }, + { + "id": "src_models_classificationresult_to_json_str", + "label": ".to_json_str()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": ".to_json_str()", + "source_file": "src/models.py", + "source_location": "L148" + }, + { + "id": "tests_test_cli_test_cli_empty_content_file", + "label": "test_cli_empty_content_file()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli_empty_content_file()", + "source_file": "tests/test_cli.py", + "source_location": "L68" + }, + { + "id": "tests_test_cli_test_cli_missing_ecp_file", + "label": "test_cli_missing_ecp_file()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli_missing_ecp_file()", + "source_file": "tests/test_cli.py", + "source_location": "L56" + }, + { + "id": "tests_test_cli_test_cli_missing_required_ecp_field", + "label": "test_cli_missing_required_ecp_field()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli_missing_required_ecp_field()", + "source_file": "tests/test_cli.py", + "source_location": "L89" + }, + { + "id": "tests_test_cli_test_cli_output_file", + "label": "test_cli_output_file()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli_output_file()", + "source_file": "tests/test_cli.py", + "source_location": "L32" + }, + { + "id": "tests_test_cli_test_cli_success_stdout", + "label": "test_cli_success_stdout()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli_success_stdout()", + "source_file": "tests/test_cli.py", + "source_location": "L9" + }, + { + "id": "tests_test_models_test_classification_error_serialization", + "label": "test_classification_error_serialization()", + "_callable": true, + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_classification_error_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L88" + }, + { + "id": "src_models_ecpsnapshot_from_dict", + "label": ".from_dict()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L69" + }, + { + "id": "src_models_ecpsnapshot_from_json_str", + "label": ".from_json_str()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": ".from_json_str()", + "source_file": "src/models.py", + "source_location": "L105" + }, + { + "id": "src_models_relatedentity_from_dict", + "label": ".from_dict()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": ".from_dict()", + "source_file": "src/models.py", + "source_location": "L37" + }, + { + "id": "tests_test_benchmark_24_classifier", + "label": "classifier()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "classifier()", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L25" + }, + { + "id": "tests_test_benchmark_24_test_benchmark_case", + "label": "test_benchmark_case()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_benchmark_case()", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L30" + }, + { + "id": "tests_test_models_test_ecp_snapshot_defaults", + "label": "test_ecp_snapshot_defaults()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_ecp_snapshot_defaults()", + "source_file": "tests/test_models.py", + "source_location": "L45" + }, + { + "id": "tests_test_models_test_ecp_snapshot_missing_required", + "label": "test_ecp_snapshot_missing_required()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_ecp_snapshot_missing_required()", + "source_file": "tests/test_models.py", + "source_location": "L59" + }, + { + "id": "tests_test_models_test_ecp_snapshot_valid", + "label": "test_ecp_snapshot_valid()", + "_callable": true, + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_ecp_snapshot_valid()", + "source_file": "tests/test_models.py", + "source_location": "L15" + }, + { + "id": "src_adapters_base_basenlpadapter_disambiguate", + "label": ".disambiguate()", + "_callable": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".disambiguate()", + "source_file": "src/adapters/base.py", + "source_location": "L24" + }, + { + "id": "src_adapters_base_basenlpadapter_evaluate_similarity", + "label": ".evaluate_similarity()", + "_callable": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".evaluate_similarity()", + "source_file": "src/adapters/base.py", + "source_location": "L19" + }, + { + "id": "src_adapters_base_basenlpadapter_is_available", + "label": ".is_available()", + "_callable": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".is_available()", + "source_file": "src/adapters/base.py", + "source_location": "L14" + }, + { + "id": "src_models_classificationresult_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "src/models.py", + "source_location": "L134" + }, + { + "id": "tests_test_models_test_classification_result_serialization", + "label": "test_classification_result_serialization()", + "_callable": true, + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "test_classification_result_serialization()", + "source_file": "tests/test_models.py", + "source_location": "L70" + }, + { + "id": "scripts_extract_google_news_build_parser", + "label": "build_parser()", + "_callable": true, + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "build_parser()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L338" + }, { "id": "scripts_extract_google_news_main", "label": "main()", @@ -257,49 +699,13 @@ "source_file": "tests/test_extract_google_news.py", "source_location": "L328" }, - { - "id": "src_adapters_base_basenlpadapter_disambiguate", - "label": ".disambiguate()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".disambiguate()", - "source_file": "src/adapters/base.py", - "source_location": "L24" - }, - { - "id": "src_adapters_base_basenlpadapter_evaluate_similarity", - "label": ".evaluate_similarity()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".evaluate_similarity()", - "source_file": "src/adapters/base.py", - "source_location": "L19" - }, - { - "id": "src_adapters_base_basenlpadapter_is_available", - "label": ".is_available()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".is_available()", - "source_file": "src/adapters/base.py", - "source_location": "L14" - }, { "id": "src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": ".disambiguate()", "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".disambiguate()", "source_file": "src/adapters/embeddings.py", @@ -311,7 +717,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".evaluate_similarity()", "source_file": "src/adapters/embeddings.py", @@ -323,7 +729,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".__init__()", "source_file": "src/adapters/embeddings.py", @@ -335,7 +741,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".is_available()", "source_file": "src/adapters/embeddings.py", @@ -347,7 +753,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".disambiguate()", "source_file": "src/adapters/llm.py", @@ -359,7 +765,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".evaluate_similarity()", "source_file": "src/adapters/llm.py", @@ -371,7 +777,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".__init__()", "source_file": "src/adapters/llm.py", @@ -383,7 +789,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".is_available()", "source_file": "src/adapters/llm.py", @@ -395,31 +801,19 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": ".__init__()", "source_file": "src/classifier.py", "source_location": "L47" }, - { - "id": "src_models_ecpsnapshot_from_json_str", - "label": ".from_json_str()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": ".from_json_str()", - "source_file": "src/models.py", - "source_location": "L105" - }, { "id": "tests_test_adapters_test_classifier_with_adapter_flags", "label": "test_classifier_with_adapter_flags()", "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "test_classifier_with_adapter_flags()", "source_file": "tests/test_adapters.py", @@ -431,7 +825,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "test_embeddings_adapter_interface()", "source_file": "tests/test_adapters.py", @@ -443,7 +837,7 @@ "_callable": true, "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "test_llm_adapter_interface()", "source_file": "tests/test_adapters.py", @@ -454,8 +848,8 @@ "label": "test_adversarial_apple_fruit_recipe()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_apple_fruit_recipe()", "source_file": "tests/test_adversarial.py", @@ -466,8 +860,8 @@ "label": "test_adversarial_related_entity_without_scope_context()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_related_entity_without_scope_context()", "source_file": "tests/test_adversarial.py", @@ -478,8 +872,8 @@ "label": "test_adversarial_sao_paulo_city_vs_fc()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_sao_paulo_city_vs_fc()", "source_file": "tests/test_adversarial.py", @@ -490,8 +884,8 @@ "label": "test_adversarial_subprocess_cli_corrupted_json()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_subprocess_cli_corrupted_json()", "source_file": "tests/test_adversarial.py", @@ -502,8 +896,8 @@ "label": "test_adversarial_subprocess_cli_empty_content()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_subprocess_cli_empty_content()", "source_file": "tests/test_adversarial.py", @@ -514,8 +908,8 @@ "label": "test_adversarial_subprocess_cli_missing_required_field()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_subprocess_cli_missing_required_field()", "source_file": "tests/test_adversarial.py", @@ -526,44 +920,20 @@ "label": "test_adversarial_subprocess_cli_success_stdout()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial_subprocess_cli_success_stdout()", "source_file": "tests/test_adversarial.py", "source_location": "L98" }, - { - "id": "tests_test_benchmark_24_classifier", - "label": "classifier()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "classifier()", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L25" - }, - { - "id": "tests_test_benchmark_24_test_benchmark_case", - "label": "test_benchmark_case()", - "_callable": true, - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_benchmark_case()", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L30" - }, { "id": "tests_test_classifier_petrobras_ecp", "label": "petrobras_ecp()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "petrobras_ecp()", "source_file": "tests/test_classifier.py", @@ -574,8 +944,8 @@ "label": "test_contextual_inherent()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_contextual_inherent()", "source_file": "tests/test_classifier.py", @@ -586,8 +956,8 @@ "label": "test_direct_inherent()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_direct_inherent()", "source_file": "tests/test_classifier.py", @@ -598,8 +968,8 @@ "label": "test_negative_anchor_suppression()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_negative_anchor_suppression()", "source_file": "tests/test_classifier.py", @@ -610,8 +980,8 @@ "label": "test_not_related()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_not_related()", "source_file": "tests/test_classifier.py", @@ -622,8 +992,8 @@ "label": "test_tangential_inherent()", "_callable": true, "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_tangential_inherent()", "source_file": "tests/test_classifier.py", @@ -797,121 +1167,13 @@ "source_file": "tests/test_language.py", "source_location": "L6" }, - { - "id": "classify_emit_error", - "label": "emit_error()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "emit_error()", - "source_file": "classify.py", - "source_location": "L73" - }, - { - "id": "classify_main", - "label": "main()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "main()", - "source_file": "classify.py", - "source_location": "L98" - }, - { - "id": "classify_parse_args", - "label": "parse_args()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "parse_args()", - "source_file": "classify.py", - "source_location": "L28" - }, - { - "id": "src_models_classificationerror_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L158" - }, - { - "id": "src_models_classificationerror_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L165" - }, - { - "id": "src_models_classificationresult_to_dict", - "label": ".to_dict()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_dict()", - "source_file": "src/models.py", - "source_location": "L134" - }, - { - "id": "src_models_classificationresult_to_json_str", - "label": ".to_json_str()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".to_json_str()", - "source_file": "src/models.py", - "source_location": "L148" - }, - { - "id": "src_models_ecpsnapshot_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L69" - }, - { - "id": "src_models_relatedentity_from_dict", - "label": ".from_dict()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": ".from_dict()", - "source_file": "src/models.py", - "source_location": "L37" - }, { "id": "src_parser_extract_evidence_snippets", "label": "extract_evidence_snippets()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "extract_evidence_snippets()", "source_file": "src/parser.py", @@ -923,7 +1185,7 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "extract_sentences()", "source_file": "src/parser.py", @@ -935,139 +1197,19 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "strip_markdown()", "source_file": "src/parser.py", "source_location": "L9" }, - { - "id": "tests_test_cli_test_cli_empty_content_file", - "label": "test_cli_empty_content_file()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli_empty_content_file()", - "source_file": "tests/test_cli.py", - "source_location": "L68" - }, - { - "id": "tests_test_cli_test_cli_missing_ecp_file", - "label": "test_cli_missing_ecp_file()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli_missing_ecp_file()", - "source_file": "tests/test_cli.py", - "source_location": "L56" - }, - { - "id": "tests_test_cli_test_cli_missing_required_ecp_field", - "label": "test_cli_missing_required_ecp_field()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli_missing_required_ecp_field()", - "source_file": "tests/test_cli.py", - "source_location": "L89" - }, - { - "id": "tests_test_cli_test_cli_output_file", - "label": "test_cli_output_file()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli_output_file()", - "source_file": "tests/test_cli.py", - "source_location": "L32" - }, - { - "id": "tests_test_cli_test_cli_success_stdout", - "label": "test_cli_success_stdout()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli_success_stdout()", - "source_file": "tests/test_cli.py", - "source_location": "L9" - }, - { - "id": "tests_test_models_test_classification_error_serialization", - "label": "test_classification_error_serialization()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_classification_error_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L88" - }, - { - "id": "tests_test_models_test_classification_result_serialization", - "label": "test_classification_result_serialization()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_classification_result_serialization()", - "source_file": "tests/test_models.py", - "source_location": "L70" - }, - { - "id": "tests_test_models_test_ecp_snapshot_defaults", - "label": "test_ecp_snapshot_defaults()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_ecp_snapshot_defaults()", - "source_file": "tests/test_models.py", - "source_location": "L45" - }, - { - "id": "tests_test_models_test_ecp_snapshot_missing_required", - "label": "test_ecp_snapshot_missing_required()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_ecp_snapshot_missing_required()", - "source_file": "tests/test_models.py", - "source_location": "L59" - }, - { - "id": "tests_test_models_test_ecp_snapshot_valid", - "label": "test_ecp_snapshot_valid()", - "_callable": true, - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_ecp_snapshot_valid()", - "source_file": "tests/test_models.py", - "source_location": "L15" - }, { "id": "tests_test_models_test_extract_evidence_snippets", "label": "test_extract_evidence_snippets()", "_callable": true, "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "test_extract_evidence_snippets()", "source_file": "tests/test_models.py", @@ -1079,59 +1221,467 @@ "_callable": true, "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "test_parser_strip_markdown()", "source_file": "tests/test_models.py", "source_location": "L100" }, { - "id": "scripts_extract_google_news_get_hl_gl_ceid", - "label": "get_hl_gl_ceid()", + "id": "scripts_extract_article_contents_articlecrawler_close", + "label": ".close()", "_callable": true, "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "get_hl_gl_ceid()", - "source_file": "scripts/extract_google_news.py", - "source_location": "L109" + "norm_label": ".close()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L472" }, { - "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", - "label": "test_get_hl_gl_ceid_default_mappings()", + "id": "scripts_extract_article_contents_articlecrawler_crawl", + "label": ".crawl()", "_callable": true, "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "test_get_hl_gl_ceid_default_mappings()", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L37" + "norm_label": ".crawl()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L487" }, { - "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", - "label": "test_get_hl_gl_ceid_dynamic_fallback()", + "id": "scripts_extract_article_contents_articlecrawler_enter", + "label": ".__enter__()", "_callable": true, "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "test_get_hl_gl_ceid_dynamic_fallback()", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L78" + "norm_label": ".__enter__()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L480" }, { - "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", - "label": "test_get_hl_gl_ceid_with_custom_locale()", + "id": "scripts_extract_article_contents_articlecrawler_exit", + "label": ".__exit__()", "_callable": true, "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "code", - "norm_label": "test_get_hl_gl_ceid_with_custom_locale()", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L60" + "norm_label": ".__exit__()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L484" + }, + { + "id": "scripts_extract_article_contents_articlecrawler_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L461" + }, + { + "id": "scripts_extract_article_contents_articlecrawler_start", + "label": ".start()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".start()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L466" + }, + { + "id": "scripts_extract_article_contents_extract_all_engines", + "label": "extract_all_engines()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "extract_all_engines()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L403" + }, + { + "id": "scripts_extract_article_contents_extractedarticle_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L190" + }, + { + "id": "scripts_extract_article_contents_extractionbatchreport_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L215" + }, + { + "id": "scripts_extract_article_contents_inputarticle_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L46" + }, + { + "id": "scripts_extract_article_contents_load_search_json", + "label": "load_search_json()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "load_search_json()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L516" + }, + { + "id": "scripts_extract_article_contents_log_info", + "label": "log_info()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "log_info()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L509" + }, + { + "id": "scripts_extract_article_contents_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "main()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L718" + }, + { + "id": "scripts_extract_article_contents_newspaperdata_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L129" + }, + { + "id": "scripts_extract_article_contents_newspaperextractor_extract", + "label": ".extract()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".extract()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L314" + }, + { + "id": "scripts_extract_article_contents_parse_arguments", + "label": "parse_arguments()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "parse_arguments()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L664" + }, + { + "id": "scripts_extract_article_contents_process_batch", + "label": "process_batch()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "process_batch()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L551" + }, + { + "id": "scripts_extract_article_contents_readabilitydata_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L165" + }, + { + "id": "scripts_extract_article_contents_readabilityextractor_extract", + "label": ".extract()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".extract()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L375" + }, + { + "id": "scripts_extract_article_contents_save_extracted_json", + "label": "save_extracted_json()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "save_extracted_json()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L544" + }, + { + "id": "scripts_extract_article_contents_trafilaturadata_to_dict", + "label": ".to_dict()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".to_dict()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L80" + }, + { + "id": "scripts_extract_article_contents_trafilaturaextractor_extract", + "label": ".extract()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": ".extract()", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L235" + }, + { + "id": "tests_test_extract_article_contents_sample_input_json", + "label": "sample_input_json()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "sample_input_json()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L63" + }, + { + "id": "tests_test_extract_article_contents_test_cli_main_missing_input_file", + "label": "test_cli_main_missing_input_file()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_cli_main_missing_input_file()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L311" + }, + { + "id": "tests_test_extract_article_contents_test_cli_main_success", + "label": "test_cli_main_success()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_cli_main_success()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L296" + }, + { + "id": "tests_test_extract_article_contents_test_crawler_error_isolation", + "label": "test_crawler_error_isolation()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_crawler_error_isolation()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L248" + }, + { + "id": "tests_test_extract_article_contents_test_e2e_cli_live_execution", + "label": "test_e2e_cli_live_execution()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_e2e_cli_live_execution()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L366" + }, + { + "id": "tests_test_extract_article_contents_test_e2e_live_article_extraction", + "label": "test_e2e_live_article_extraction()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_e2e_live_article_extraction()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L322" + }, + { + "id": "tests_test_extract_article_contents_test_extract_all_engines", + "label": "test_extract_all_engines()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_extract_all_engines()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L221" + }, + { + "id": "tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", + "label": "test_extractor_error_isolation_on_faulty_engine()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_extractor_error_isolation_on_faulty_engine()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L235" + }, + { + "id": "tests_test_extract_article_contents_test_input_article_creation", + "label": "test_input_article_creation()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_input_article_creation()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L96" + }, + { + "id": "tests_test_extract_article_contents_test_load_search_json_invalid_file", + "label": "test_load_search_json_invalid_file()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_load_search_json_invalid_file()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L120" + }, + { + "id": "tests_test_extract_article_contents_test_load_search_json_valid", + "label": "test_load_search_json_valid()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_load_search_json_valid()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L112" + }, + { + "id": "tests_test_extract_article_contents_test_newspaper_extractor", + "label": "test_newspaper_extractor()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_newspaper_extractor()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L199" + }, + { + "id": "tests_test_extract_article_contents_test_process_batch_with_limit", + "label": "test_process_batch_with_limit()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_process_batch_with_limit()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L277" + }, + { + "id": "tests_test_extract_article_contents_test_readability_extractor", + "label": "test_readability_extractor()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_readability_extractor()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L211" + }, + { + "id": "tests_test_extract_article_contents_test_save_extracted_json", + "label": "test_save_extracted_json()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_save_extracted_json()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L126" + }, + { + "id": "tests_test_extract_article_contents_test_trafilatura_extractor", + "label": "test_trafilatura_extractor()", + "_callable": true, + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_trafilatura_extractor()", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L190" }, { "id": "scripts_extract_google_news_extract_google_news", @@ -1157,6 +1707,18 @@ "source_file": "scripts/extract_google_news.py", "source_location": "L255" }, + { + "id": "scripts_extract_google_news_get_hl_gl_ceid", + "label": "get_hl_gl_ceid()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "get_hl_gl_ceid()", + "source_file": "scripts/extract_google_news.py", + "source_location": "L109" + }, { "id": "scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", @@ -1193,6 +1755,18 @@ "source_file": "scripts/extract_google_news.py", "source_location": "L222" }, + { + "id": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", + "label": "test_parse_google_news_rss_with_fixture()", + "_callable": true, + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "code", + "norm_label": "test_parse_google_news_rss_with_fixture()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L111" + }, { "id": "tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", @@ -1266,16 +1840,40 @@ "source_location": "L291" }, { - "id": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", - "label": "test_parse_google_news_rss_with_fixture()", + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", + "label": "test_get_hl_gl_ceid_default_mappings()", "_callable": true, "_origin": "ast", "community": 84, "community_name": "test_extract_google_news.py", "file_type": "code", - "norm_label": "test_parse_google_news_rss_with_fixture()", + "norm_label": "test_get_hl_gl_ceid_default_mappings()", "source_file": "tests/test_extract_google_news.py", - "source_location": "L111" + "source_location": "L37" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", + "label": "test_get_hl_gl_ceid_dynamic_fallback()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_dynamic_fallback()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L78" + }, + { + "id": "tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", + "label": "test_get_hl_gl_ceid_with_custom_locale()", + "_callable": true, + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "code", + "norm_label": "test_get_hl_gl_ceid_with_custom_locale()", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L60" }, { "id": "tests_test_extract_google_news_test_resolve_article_url_fallback", @@ -1373,18 +1971,6 @@ "source_file": "tests/test_extract_google_news.py", "source_location": "L86" }, - { - "id": "scripts_extract_google_news_build_parser", - "label": "build_parser()", - "_callable": true, - "_origin": "ast", - "community": 98, - "community_name": "build_parser", - "file_type": "code", - "norm_label": "build_parser()", - "source_file": "scripts/extract_google_news.py", - "source_location": "L338" - }, { "id": "tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", @@ -2058,6 +2644,1374 @@ "source_file": ".agents/skills/speckit-tasks/SKILL.md", "source_location": "L11" }, + { + "id": "classify", + "label": "classify.py", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "classify.py", + "source_file": "classify.py", + "source_location": "L1" + }, + { + "id": "classify_py_namespace", + "label": "Namespace", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "namespace", + "source_file": "", + "source_location": "" + }, + { + "id": "enum", + "label": "Enum", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "enum", + "source_file": "", + "source_location": "" + }, + { + "id": "src_models", + "label": "models.py", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "models.py", + "source_file": "src/models.py", + "source_location": "L1" + }, + { + "id": "str", + "label": "str", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "str", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_cli", + "label": "test_cli.py", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "code", + "norm_label": "test_cli.py", + "source_file": "tests/test_cli.py", + "source_location": "L1" + }, + { + "id": "src_models_rationale_1", + "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "rationale", + "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", + "source_file": "src/models.py", + "source_location": "L1" + }, + { + "id": "tests_test_cli_rationale_1", + "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", + "_origin": "ast", + "community": 100, + "community_name": "models.py", + "file_type": "rationale", + "norm_label": "cli execution tests covering flags, arguments, stdout, and error handling.", + "source_file": "tests/test_cli.py", + "source_location": "L1" + }, + { + "id": "parametrize", + "label": "parametrize", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "parametrize", + "source_file": "", + "source_location": "" + }, + { + "id": "src_models_py_any", + "label": "Any", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_benchmark_24", + "label": "test_benchmark_24.py", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "test_benchmark_24.py", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L1" + }, + { + "id": "tests_test_benchmark_24_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_benchmark_24_rationale_1", + "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", + "_origin": "ast", + "community": 101, + "community_name": "ECPSnapshot", + "file_type": "rationale", + "norm_label": "controlled 24-case benchmark suite for multilingual nlp entity inherence...", + "source_file": "tests/test_benchmark_24.py", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_assumptions", + "label": "Assumptions", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L127" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", + "label": "Assumptions & Scope", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions & scope", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L125" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L13" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", + "label": "Explicit Out of Scope (POC)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "explicit out of scope (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L132" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L61" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", + "label": "Key Entities *(data models & domain entities)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "key entities *(data models & domain entities)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L105" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", + "label": "Measurable Outcomes", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "measurable outcomes", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L116" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L59" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", + "label": "Session 2026-08-19", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-19", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L15" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L114" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L25" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", + "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L27" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", + "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", + "_origin": "ast", + "community": 102, + "community_name": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L44" + }, + { + "id": "docs_prd_extrator_artigos_nlp", + "label": "prd_extrator_artigos_nlp.md", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "page", + "norm_label": "prd_extrator_artigos_nlp.md", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L1" + }, + { + "id": "docs_prd_extrator_artigos_nlp_1_1_objetivo_do_produto", + "label": "1.1 Objetivo do Produto", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.1 objetivo do produto", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L13" + }, + { + "id": "docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", + "label": "1. Vis\u00e3o Geral e Contexto", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. visao geral e contexto", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L11" + }, + { + "id": "docs_prd_extrator_artigos_nlp_2_personas_e_casos_de_uso", + "label": "2. Personas e Casos de Uso", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. personas e casos de uso", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L25" + }, + { + "id": "docs_prd_extrator_artigos_nlp_3_arquitetura_e_fluxo_do_sistema", + "label": "3. Arquitetura e Fluxo do Sistema", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. arquitetura e fluxo do sistema", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L35" + }, + { + "id": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "label": "4. Requisitos Funcionais (FR)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. requisitos funcionais (fr)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L58" + }, + { + "id": "docs_prd_extrator_artigos_nlp_5_requisitos_n\u00e3o_funcionais_nfr", + "label": "5. Requisitos N\u00e3o Funcionais (NFR)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. requisitos nao funcionais (nfr)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L138" + }, + { + "id": "docs_prd_extrator_artigos_nlp_6_1_esquema_do_json_de_entrada_input", + "label": "6.1 Esquema do JSON de Entrada (`Input`)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6.1 esquema do json de entrada (`input`)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L152" + }, + { + "id": "docs_prd_extrator_artigos_nlp_6_2_esquema_do_json_consolidado_de_sa\u00edda_output", + "label": "6.2 Esquema do JSON Consolidado de Sa\u00edda (`Output`)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6.2 esquema do json consolidado de saida (`output`)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L173" + }, + { + "id": "docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", + "label": "6. Esquema de Dados (Contratos de Interface)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "6. esquema de dados (contratos de interface)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L150" + }, + { + "id": "docs_prd_extrator_artigos_nlp_7_depend\u00eancias_do_projeto", + "label": "7. Depend\u00eancias do Projeto", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "7. dependencias do projeto", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L230" + }, + { + "id": "docs_prd_extrator_artigos_nlp_8_crit\u00e9rios_de_aceite", + "label": "8. Crit\u00e9rios de Aceite", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "8. criterios de aceite", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L246" + }, + { + "id": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "label": "PRD \u2014 Extrator e Parser de Artigos Multimotor (Foxcape + Trafilatura + Newspaper4k + Readability)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "prd \u2014 extrator e parser de artigos multimotor (foxcape + trafilatura + newspaper4k + readability)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L1" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf01_ingest\u00e3o_de_arquivo_json_de_not\u00edcias", + "label": "RF01 \u2014 Ingest\u00e3o de Arquivo JSON de Not\u00edcias", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf01 \u2014 ingestao de arquivo json de noticias", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L60" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf02_navega\u00e7\u00e3o_e_coleta_com_foxcape_obrigat\u00f3rio", + "label": "RF02 \u2014 Navega\u00e7\u00e3o e Coleta com Foxcape (Obrigat\u00f3rio)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf02 \u2014 navegacao e coleta com foxcape (obrigatorio)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L65" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf03_extra\u00e7\u00e3o_m\u00e1xima_com_trafilatura", + "label": "RF03 \u2014 Extra\u00e7\u00e3o M\u00e1xima com Trafilatura", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf03 \u2014 extracao maxima com trafilatura", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L71" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf04_extra\u00e7\u00e3o_m\u00e1xima_com_newspaper4k", + "label": "RF04 \u2014 Extra\u00e7\u00e3o M\u00e1xima com Newspaper4k", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf04 \u2014 extracao maxima com newspaper4k", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L84" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf05_extra\u00e7\u00e3o_com_readability_readability_lxml", + "label": "RF05 \u2014 Extra\u00e7\u00e3o com Readability (`readability-lxml`)", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf05 \u2014 extracao com readability (`readability-lxml`)", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L96" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf06_consolida\u00e7\u00e3o_e_exporta\u00e7\u00e3o_de_resultados", + "label": "RF06 \u2014 Consolida\u00e7\u00e3o e Exporta\u00e7\u00e3o de Resultados", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf06 \u2014 consolidacao e exportacao de resultados", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L103" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf07_interface_de_linha_de_comando_cli_e_logs_em_tempo_real", + "label": "RF07 \u2014 Interface de Linha de Comando (CLI) e Logs em Tempo Real", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf07 \u2014 interface de linha de comando (cli) e logs em tempo real", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L114" + }, + { + "id": "docs_prd_extrator_artigos_nlp_rf08_toler\u00e2ncia_a_falhas_e_resili\u00eancia", + "label": "RF08 \u2014 Toler\u00e2ncia a Falhas e Resili\u00eancia", + "_origin": "ast", + "community": 103, + "community_name": "4. Requisitos Funcionais (FR)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "rf08 \u2014 tolerancia a falhas e resiliencia", + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L132" + }, + { + "id": "specs_003_article_content_extractor_tasks", + "label": "003-article-content-extractor/tasks.md", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/tasks.md", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_tasks_dependencies_execution_order", + "label": "Dependencies & Execution Order", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "dependencies & execution order", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L102" + }, + { + "id": "specs_003_article_content_extractor_tasks_entrega_incremental", + "label": "Entrega Incremental", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "entrega incremental", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L127" + }, + { + "id": "specs_003_article_content_extractor_tasks_implementation_strategy", + "label": "Implementation Strategy", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation strategy", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L120" + }, + { + "id": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_1", + "label": "Implementa\u00e7\u00e3o da User Story 1", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementacao da user story 1", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L43" + }, + { + "id": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_2", + "label": "Implementa\u00e7\u00e3o da User Story 2", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementacao da user story 2", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L64" + }, + { + "id": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_3", + "label": "Implementa\u00e7\u00e3o da User Story 3", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementacao da user story 3", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L82" + }, + { + "id": "specs_003_article_content_extractor_tasks_mvp_first_user_story_1_only", + "label": "MVP First (User Story 1 Only)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "mvp first (user story 1 only)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L122" + }, + { + "id": "specs_003_article_content_extractor_tasks_oportunidades_de_execu\u00e7\u00e3o_paralela", + "label": "Oportunidades de Execu\u00e7\u00e3o Paralela", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "oportunidades de execucao paralela", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L113" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_1_setup_dependencies", + "label": "Phase 1: Setup & Dependencies", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 1: setup & dependencies", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L10" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_2_foundational_estruturas_e_modelos_base", + "label": "Phase 2: Foundational (Estruturas e Modelos Base)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 2: foundational (estruturas e modelos base)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L19" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 3: user story 1 - extracao completa e consolidada de artigos em lote (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L31" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "label": "Phase 4: User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 4: user story 2 - resiliencia e isolamento de falhas por artigo e motor (priority: p2)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L54" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", + "label": "Phase 5: User Story 3 - Controle de Execu\u00e7\u00e3o via CLI e Feedback Visual (Priority: P3)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 5: user story 3 - controle de execucao via cli e feedback visual (priority: p3)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L72" + }, + { + "id": "specs_003_article_content_extractor_tasks_phase_6_polish_valida\u00e7\u00e3o_final", + "label": "Phase 6: Polish & Valida\u00e7\u00e3o Final", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 6: polish & validacao final", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L91" + }, + { + "id": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "label": "Tasks: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tasks: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_tasks_testes_da_user_story_1_tdd", + "label": "Testes da User Story 1 (TDD)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "testes da user story 1 (tdd)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L37" + }, + { + "id": "specs_003_article_content_extractor_tasks_testes_da_user_story_2_tdd", + "label": "Testes da User Story 2 (TDD)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "testes da user story 2 (tdd)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L60" + }, + { + "id": "specs_003_article_content_extractor_tasks_testes_da_user_story_3_tdd", + "label": "Testes da User Story 3 (TDD)", + "_origin": "ast", + "community": 104, + "community_name": "Tasks: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "testes da user story 3 (tdd)", + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L78" + }, + { + "id": "abc", + "label": "ABC", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "abc", + "source_file": "", + "source_location": "" + }, + { + "id": "src_adapters_base", + "label": "base.py", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "base.py", + "source_file": "src/adapters/base.py", + "source_location": "L1" + }, + { + "id": "src_adapters_embeddings", + "label": "embeddings.py", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "embeddings.py", + "source_file": "src/adapters/embeddings.py", + "source_location": "L1" + }, + { + "id": "src_adapters_llm", + "label": "llm.py", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "code", + "norm_label": "llm.py", + "source_file": "src/adapters/llm.py", + "source_location": "L1" + }, + { + "id": "src_adapters_base_rationale_1", + "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "base abstract adapter interface for optional tier 2 / tier 3 nlp enhancers.", + "source_file": "src/adapters/base.py", + "source_location": "L1" + }, + { + "id": "src_adapters_base_rationale_11", + "label": "Abstract interface for pluggable NLP classification adapters.", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "abstract interface for pluggable nlp classification adapters.", + "source_file": "src/adapters/base.py", + "source_location": "L11" + }, + { + "id": "src_adapters_base_rationale_15", + "label": "Return True if the underlying provider or model is installed and configured.", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "return true if the underlying provider or model is installed and configured.", + "source_file": "src/adapters/base.py", + "source_location": "L15" + }, + { + "id": "src_adapters_base_rationale_20", + "label": "Compute semantic similarity score between text and a set of candidate terms.", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "compute semantic similarity score between text and a set of candidate terms.", + "source_file": "src/adapters/base.py", + "source_location": "L20" + }, + { + "id": "src_adapters_base_rationale_30", + "label": "Optionally refine an ambiguous classification result.", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "optionally refine an ambiguous classification result.", + "source_file": "src/adapters/base.py", + "source_location": "L30" + }, + { + "id": "src_adapters_embeddings_rationale_1", + "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "optional local vector embeddings adapter (tier 2). disabled by default....", + "source_file": "src/adapters/embeddings.py", + "source_location": "L1" + }, + { + "id": "src_adapters_llm_rationale_1", + "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", + "_origin": "ast", + "community": 105, + "community_name": "ClassificationResult", + "file_type": "rationale", + "norm_label": "optional llm fallback adapter (tier 3). disabled by default. provides fallback...", + "source_file": "src/adapters/llm.py", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_plan", + "label": "003-article-content-extractor/plan.md", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/plan.md", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_plan_constitution_check", + "label": "Constitution Check", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "constitution check", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L29" + }, + { + "id": "specs_003_article_content_extractor_plan_documentation_this_feature", + "label": "Documentation (this feature)", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "documentation (this feature)", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L44" + }, + { + "id": "specs_003_article_content_extractor_plan_implementation_phases", + "label": "Implementation Phases", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation phases", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L73" + }, + { + "id": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "label": "Implementation Plan: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation plan: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_plan_phase_0_outline_research_completed", + "label": "Phase 0: Outline & Research *(Completed)*", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 0: outline & research *(completed)*", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L75" + }, + { + "id": "specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", + "label": "Phase 1: Design & Contracts *(Completed)*", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 1: design & contracts *(completed)*", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L80" + }, + { + "id": "specs_003_article_content_extractor_plan_phase_2_tasks_execution_next_speckit_tasks", + "label": "Phase 2: Tasks & Execution *(Next: `/speckit-tasks`)*", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "phase 2: tasks & execution *(next: `/speckit-tasks`)*", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L84" + }, + { + "id": "specs_003_article_content_extractor_plan_project_structure", + "label": "Project Structure", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "project structure", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L42" + }, + { + "id": "specs_003_article_content_extractor_plan_source_code_layout", + "label": "Source Code Layout", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "source code layout", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L59" + }, + { + "id": "specs_003_article_content_extractor_plan_summary", + "label": "Summary", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "summary", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L9" + }, + { + "id": "specs_003_article_content_extractor_plan_technical_context", + "label": "Technical Context", + "_origin": "ast", + "community": 106, + "community_name": "Implementation Plan: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "technical context", + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L15" + }, + { + "id": "specs_003_article_content_extractor_quickstart", + "label": "003-article-content-extractor/quickstart.md", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/quickstart.md", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_quickstart_1_pr\u00e9_requisitos", + "label": "1. Pr\u00e9-requisitos", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. pre-requisitos", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L7" + }, + { + "id": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "label": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. cenarios de validacao", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L17" + }, + { + "id": "specs_003_article_content_extractor_quickstart_3_valida\u00e7\u00e3o_automatizada_de_testes", + "label": "3. Valida\u00e7\u00e3o Automatizada de Testes", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. validacao automatizada de testes", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L71" + }, + { + "id": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_com_amostragem_r\u00e1pida_limit_2", + "label": "Cen\u00e1rio 1: Extra\u00e7\u00e3o com Amostragem R\u00e1pida (Limit 2)", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 1: extracao com amostragem rapida (limit 2)", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L19" + }, + { + "id": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_2_caminho_customizado_de_sa\u00edda", + "label": "Cen\u00e1rio 2: Caminho Customizado de Sa\u00edda", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 2: caminho customizado de saida", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L33" + }, + { + "id": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_3_modo_silencioso_silent", + "label": "Cen\u00e1rio 3: Modo Silencioso (`--silent`)", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 3: modo silencioso (`--silent`)", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L45" + }, + { + "id": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_4_resili\u00eancia_contra_urls_inv\u00e1lidas", + "label": "Cen\u00e1rio 4: Resili\u00eancia contra URLs Inv\u00e1lidas", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cenario 4: resiliencia contra urls invalidas", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L58" + }, + { + "id": "specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", + "label": "Quickstart & Validation Guide: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 107, + "community_name": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", + "file_type": "document", + "node_kind": "heading", + "norm_label": "quickstart & validation guide: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_research", + "label": "003-article-content-extractor/research.md", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/research.md", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "label": "1. Technical Decisions & Tradeoffs", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. technical decisions & tradeoffs", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L3" + }, + { + "id": "specs_003_article_content_extractor_research_decision_1_motor_de_navega\u00e7\u00e3o_e_renderiza\u00e7\u00e3o_com_foxcape_em_sess\u00e3o_\u00fanica", + "label": "Decision 1: Motor de Navega\u00e7\u00e3o e Renderiza\u00e7\u00e3o com `foxcape` em Sess\u00e3o \u00danica", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 1: motor de navegacao e renderizacao com `foxcape` em sessao unica", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L5" + }, + { + "id": "specs_003_article_content_extractor_research_decision_2_orquestra\u00e7\u00e3o_tripla_de_extra\u00e7\u00e3o_de_conte\u00fado_nlp_web_scraping", + "label": "Decision 2: Orquestra\u00e7\u00e3o Tripla de Extra\u00e7\u00e3o de Conte\u00fado (NLP & Web Scraping)", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 2: orquestracao tripla de extracao de conteudo (nlp & web scraping)", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L17" + }, + { + "id": "specs_003_article_content_extractor_research_decision_3_resili\u00eancia_e_isolamento_de_falhas_por_camada", + "label": "Decision 3: Resili\u00eancia e Isolamento de Falhas por Camada", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 3: resiliencia e isolamento de falhas por camada", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L28" + }, + { + "id": "specs_003_article_content_extractor_research_decision_4_heran\u00e7a_inteligente_de_idioma_para_nlp", + "label": "Decision 4: Heran\u00e7a Inteligente de Idioma para NLP", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 4: heranca inteligente de idioma para nlp", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L36" + }, + { + "id": "specs_003_article_content_extractor_research_decision_5_gerenciamento_de_mem\u00f3ria_e_descarte_do_raw_html", + "label": "Decision 5: Gerenciamento de Mem\u00f3ria e Descarte do Raw HTML", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 5: gerenciamento de memoria e descarte do raw html", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L42" + }, + { + "id": "specs_003_article_content_extractor_research_decision_6_segrega\u00e7\u00e3o_de_streams_e_feedback_visual_em_stderr", + "label": "Decision 6: Segrega\u00e7\u00e3o de Streams e Feedback Visual em `stderr`", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "decision 6: segregacao de streams e feedback visual em `stderr`", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L48" + }, + { + "id": "specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", + "label": "Research: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 108, + "community_name": "1. Technical Decisions & Tradeoffs", + "file_type": "document", + "node_kind": "heading", + "norm_label": "research: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", + "label": "Complexity Tracking", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "complexity tracking", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L120" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_constitution_check", + "label": "Constitution Check", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "constitution check", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L43" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", + "label": "Documentation (this feature)", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "documentation (this feature)", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L58" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation plan: multilingual nlp entity inherence classifier (poc)", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_project_structure", + "label": "Project Structure", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "project structure", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L56" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", + "label": "Source Code (repository root)", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "source code (repository root)", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L74" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_summary", + "label": "Summary", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "summary", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L9" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan_technical_context", + "label": "Technical Context", + "_origin": "ast", + "community": 109, + "community_name": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "technical context", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L15" + }, { "id": "specify_memory_constitution", "label": "constitution.md", @@ -2190,6 +4144,330 @@ "source_file": ".specify/memory/constitution.md", "source_location": "L37" }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", + "label": "1. Requirement Completeness & Scope Boundaries", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. requirement completeness & scope boundaries", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L13" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", + "label": "2. Requirement Clarity & Decision Semantics", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. requirement clarity & decision semantics", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L22" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", + "label": "3. Requirement Consistency & Alignment", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. requirement consistency & alignment", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L31" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", + "label": "4. Acceptance Criteria & Measurability", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. acceptance criteria & measurability", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L39" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", + "label": "5. Scenario & Edge Case Coverage", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. scenario & edge case coverage", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L47" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", + "label": "Notes", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L56" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", + "label": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "_origin": "ast", + "community": 110, + "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "poc readiness & requirements quality checklist: multilingual nlp entity inherence classifier", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements", + "label": "001-multilingual-entity-classifier/checklists/requirements.md", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "page", + "norm_label": "001-multilingual-entity-classifier/checklists/requirements.md", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", + "label": "Content Quality", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "content quality", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L7" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", + "label": "Feature Readiness", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature readiness", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L25" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", + "label": "Notes", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L32" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", + "label": "Requirement Completeness", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirement completeness", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L14" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", + "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "_origin": "ast", + "community": 111, + "community_name": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "file_type": "document", + "node_kind": "heading", + "norm_label": "specification quality checklist: multilingual nlp entity inherence classifier", + "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract", + "label": "003-article-content-extractor/contracts/cli-contract.md", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/contracts/cli-contract.md", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract_1_comando_de_execu\u00e7\u00e3o", + "label": "1. Comando de Execu\u00e7\u00e3o", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. comando de execucao", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L3" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract_2_argumentos_e_flags", + "label": "2. Argumentos e Flags", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. argumentos e flags", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L11" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract_3_c\u00f3digos_de_sa\u00edda_exit_codes", + "label": "3. C\u00f3digos de Sa\u00edda (Exit Codes)", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. codigos de saida (exit codes)", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L25" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract_4_comportamento_de_streams_i_o", + "label": "4. Comportamento de Streams (I/O)", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. comportamento de streams (i/o)", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L35" + }, + { + "id": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "label": "CLI Contract: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 112, + "community_name": "CLI Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "cli contract: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", + "label": "poc-readiness.md", + "_origin": "ast", + "community": 113, + "community_name": "001-multilingual-entity-classifier/spec.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "poc-readiness.md", + "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_plan", + "label": "001-multilingual-entity-classifier/plan.md", + "_origin": "ast", + "community": 113, + "community_name": "001-multilingual-entity-classifier/spec.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "001-multilingual-entity-classifier/plan.md", + "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_spec", + "label": "001-multilingual-entity-classifier/spec.md", + "_origin": "ast", + "community": 113, + "community_name": "001-multilingual-entity-classifier/spec.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "001-multilingual-entity-classifier/spec.md", + "source_file": "specs/001-multilingual-entity-classifier/spec.md", + "source_location": "L1" + }, + { + "id": "specs_001_multilingual_entity_classifier_tasks", + "label": "001-multilingual-entity-classifier/tasks.md", + "_origin": "ast", + "community": 113, + "community_name": "001-multilingual-entity-classifier/spec.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "001-multilingual-entity-classifier/tasks.md", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_contracts_json_schema", + "label": "json-schema.md", + "_origin": "ast", + "community": 114, + "community_name": "JSON Schema Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "json-schema.md", + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_contracts_json_schema_1_schema_de_entrada_input_json", + "label": "1. Schema de Entrada (Input JSON)", + "_origin": "ast", + "community": 114, + "community_name": "JSON Schema Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. schema de entrada (input json)", + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L3" + }, + { + "id": "specs_003_article_content_extractor_contracts_json_schema_2_schema_de_sa\u00edda_output_json", + "label": "2. Schema de Sa\u00edda (Output JSON)", + "_origin": "ast", + "community": 114, + "community_name": "JSON Schema Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. schema de saida (output json)", + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L27" + }, + { + "id": "specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", + "label": "JSON Schema Contract: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 114, + "community_name": "JSON Schema Contract: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "json schema contract: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L1" + }, { "id": "specify_templates_constitution_template", "label": "constitution-template.md", @@ -4724,6 +7002,17 @@ "source_file": ".agents/skills/speckit-analyze/SKILL.md", "source_location": "L11" }, + { + "id": "argumentparser", + "label": "ArgumentParser", + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "code", + "norm_label": "argumentparser", + "source_file": "", + "source_location": "" + }, { "id": "capturefixture", "label": "CaptureFixture", @@ -4736,7 +7025,7 @@ "source_location": "" }, { - "id": "path", + "id": "tests_test_extract_google_news_py_path", "label": "Path", "_origin": "ast", "community": 40, @@ -4746,6 +7035,17 @@ "source_file": "", "source_location": "" }, + { + "id": "scripts_extract_google_news_rationale_339", + "label": "Cria e configura o parser de argumentos CLI.", + "_origin": "ast", + "community": 40, + "community_name": "main", + "file_type": "rationale", + "norm_label": "cria e configura o parser de argumentos cli.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L339" + }, { "id": "scripts_extract_google_news_rationale_406", "label": "Ponto de entrada do script CLI.", @@ -5114,13 +7414,13 @@ }, { "id": "specs_001_multilingual_entity_classifier_contracts_cli_contract", - "label": "cli-contract.md", + "label": "001-multilingual-entity-classifier/contracts/cli-contract.md", "_origin": "ast", "community": 44, "community_name": "2. Standard Streams & Exit Codes", "file_type": "document", "node_kind": "page", - "norm_label": "cli-contract.md", + "norm_label": "001-multilingual-entity-classifier/contracts/cli-contract.md", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L1" }, @@ -5196,144 +7496,67 @@ "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L1" }, - { - "id": "abc", - "label": "ABC", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "abc", - "source_file": "", - "source_location": "" - }, - { - "id": "enum", - "label": "Enum", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "enum", - "source_file": "", - "source_location": "" - }, - { - "id": "parametrize", - "label": "parametrize", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "parametrize", - "source_file": "", - "source_location": "" - }, - { - "id": "src_adapters_base", - "label": "base.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "base.py", - "source_file": "src/adapters/base.py", - "source_location": "L1" - }, - { - "id": "src_adapters_embeddings", - "label": "embeddings.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "embeddings.py", - "source_file": "src/adapters/embeddings.py", - "source_location": "L1" - }, - { - "id": "src_adapters_llm", - "label": "llm.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "llm.py", - "source_file": "src/adapters/llm.py", - "source_location": "L1" - }, - { - "id": "src_classifier", - "label": "classifier.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "classifier.py", - "source_file": "src/classifier.py", - "source_location": "L1" - }, - { - "id": "src_models", - "label": "models.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "models.py", - "source_file": "src/models.py", - "source_location": "L1" - }, { "id": "tests_test_adapters", "label": "test_adapters.py", "_origin": "ast", "community": 45, - "community_name": "ECPSnapshot", + "community_name": "LocalEmbeddingsAdapter", "file_type": "code", "norm_label": "test_adapters.py", "source_file": "tests/test_adapters.py", "source_location": "L1" }, + { + "id": "src_adapters_embeddings_rationale_15", + "label": "Optional adapter for local multilingual semantic vector embeddings.", + "_origin": "ast", + "community": 45, + "community_name": "LocalEmbeddingsAdapter", + "file_type": "rationale", + "norm_label": "optional adapter for local multilingual semantic vector embeddings.", + "source_file": "src/adapters/embeddings.py", + "source_location": "L15" + }, + { + "id": "src_adapters_llm_rationale_16", + "label": "Optional adapter for LLM fallback boundary disambiguation.", + "_origin": "ast", + "community": 45, + "community_name": "LocalEmbeddingsAdapter", + "file_type": "rationale", + "norm_label": "optional adapter for llm fallback boundary disambiguation.", + "source_file": "src/adapters/llm.py", + "source_location": "L16" + }, + { + "id": "tests_test_adapters_rationale_1", + "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", + "_origin": "ast", + "community": 45, + "community_name": "LocalEmbeddingsAdapter", + "file_type": "rationale", + "norm_label": "unit tests for optional adapter interfaces (tier 2 / tier 3).", + "source_file": "tests/test_adapters.py", + "source_location": "L1" + }, { "id": "tests_test_adversarial", "label": "test_adversarial.py", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_adversarial.py", "source_file": "tests/test_adversarial.py", "source_location": "L1" }, - { - "id": "tests_test_benchmark_24", - "label": "test_benchmark_24.py", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "test_benchmark_24.py", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L1" - }, - { - "id": "tests_test_benchmark_24_py_fixture", - "label": "fixture", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "code", - "norm_label": "fixture", - "source_file": "", - "source_location": "" - }, { "id": "tests_test_classifier", "label": "test_classifier.py", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "test_classifier.py", "source_file": "tests/test_classifier.py", @@ -5343,162 +7566,30 @@ "id": "tests_test_classifier_py_fixture", "label": "fixture", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "code", "norm_label": "fixture", "source_file": "", "source_location": "" }, - { - "id": "src_adapters_base_rationale_1", - "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "base abstract adapter interface for optional tier 2 / tier 3 nlp enhancers.", - "source_file": "src/adapters/base.py", - "source_location": "L1" - }, - { - "id": "src_adapters_base_rationale_11", - "label": "Abstract interface for pluggable NLP classification adapters.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "abstract interface for pluggable nlp classification adapters.", - "source_file": "src/adapters/base.py", - "source_location": "L11" - }, - { - "id": "src_adapters_base_rationale_15", - "label": "Return True if the underlying provider or model is installed and configured.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "return true if the underlying provider or model is installed and configured.", - "source_file": "src/adapters/base.py", - "source_location": "L15" - }, - { - "id": "src_adapters_base_rationale_20", - "label": "Compute semantic similarity score between text and a set of candidate terms.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "compute semantic similarity score between text and a set of candidate terms.", - "source_file": "src/adapters/base.py", - "source_location": "L20" - }, - { - "id": "src_adapters_base_rationale_30", - "label": "Optionally refine an ambiguous classification result.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "optionally refine an ambiguous classification result.", - "source_file": "src/adapters/base.py", - "source_location": "L30" - }, - { - "id": "src_adapters_embeddings_rationale_1", - "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "optional local vector embeddings adapter (tier 2). disabled by default....", - "source_file": "src/adapters/embeddings.py", - "source_location": "L1" - }, - { - "id": "src_adapters_embeddings_rationale_15", - "label": "Optional adapter for local multilingual semantic vector embeddings.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "optional adapter for local multilingual semantic vector embeddings.", - "source_file": "src/adapters/embeddings.py", - "source_location": "L15" - }, - { - "id": "src_adapters_llm_rationale_1", - "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "optional llm fallback adapter (tier 3). disabled by default. provides fallback...", - "source_file": "src/adapters/llm.py", - "source_location": "L1" - }, - { - "id": "src_adapters_llm_rationale_16", - "label": "Optional adapter for LLM fallback boundary disambiguation.", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "optional adapter for llm fallback boundary disambiguation.", - "source_file": "src/adapters/llm.py", - "source_location": "L16" - }, - { - "id": "src_classifier_rationale_1", - "label": "Core deterministic classification engine (Tier 1 core).", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "core deterministic classification engine (tier 1 core).", - "source_file": "src/classifier.py", - "source_location": "L1" - }, { "id": "src_classifier_rationale_45", "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "tier 1 deterministic nlp entity inherence classifier.", "source_file": "src/classifier.py", "source_location": "L45" }, - { - "id": "src_models_rationale_1", - "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "data models and validation schemas for multilingual nlp entity inherence...", - "source_file": "src/models.py", - "source_location": "L1" - }, - { - "id": "tests_test_adapters_rationale_1", - "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "unit tests for optional adapter interfaces (tier 2 / tier 3).", - "source_file": "tests/test_adapters.py", - "source_location": "L1" - }, { "id": "tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "adversarial and robustness test suite for multilingual nlp entity inherence...", "source_file": "tests/test_adversarial.py", @@ -5508,8 +7599,8 @@ "id": "tests_test_adversarial_rationale_134", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with empty content and verify error code and exit code.", "source_file": "tests/test_adversarial.py", @@ -5519,8 +7610,8 @@ "id": "tests_test_adversarial_rationale_16", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "content about city/state governance of sao paulo against ecp for sao paulo fc.", "source_file": "tests/test_adversarial.py", @@ -5530,8 +7621,8 @@ "id": "tests_test_adversarial_rationale_165", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with missing target_name and verify error payload.", "source_file": "tests/test_adversarial.py", @@ -5541,8 +7632,8 @@ "id": "tests_test_adversarial_rationale_194", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess with corrupted json and verify error payload.", "source_file": "tests/test_adversarial.py", @@ -5552,8 +7643,8 @@ "id": "tests_test_adversarial_rationale_41", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "content about apple fruit/culinary recipe against apple inc. tech entity.", "source_file": "tests/test_adversarial.py", @@ -5563,8 +7654,8 @@ "id": "tests_test_adversarial_rationale_64", "label": "High-weight related entity mentioned in passing without required domain anchors.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "high-weight related entity mentioned in passing without required domain anchors.", "source_file": "tests/test_adversarial.py", @@ -5574,191 +7665,24 @@ "id": "tests_test_adversarial_rationale_99", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "run cli via subprocess without --output and verify stdout is pure parseable...", "source_file": "tests/test_adversarial.py", "source_location": "L99" }, - { - "id": "tests_test_benchmark_24_rationale_1", - "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", - "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", - "file_type": "rationale", - "norm_label": "controlled 24-case benchmark suite for multilingual nlp entity inherence...", - "source_file": "tests/test_benchmark_24.py", - "source_location": "L1" - }, { "id": "tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "_origin": "ast", - "community": 45, - "community_name": "ECPSnapshot", + "community": 46, + "community_name": "InherenceClassifier", "file_type": "rationale", "norm_label": "unit tests for deterministic classification decision logic.", "source_file": "tests/test_classifier.py", "source_location": "L1" }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", - "label": "Dependencies & Execution Order", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "dependencies & execution order", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L97" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", - "label": "Implementation for User Story 1", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 1", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L42" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", - "label": "Implementation for User Story 2", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 2", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L58" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", - "label": "Implementation for User Story 3", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation for user story 3", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L77" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", - "label": "Implementation Strategy", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "implementation strategy", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L109" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", - "label": "Phase 1: Setup (Shared Infrastructure)", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 1: setup (shared infrastructure)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L7" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", - "label": "Phase 2: Foundational (Blocking Prerequisites)", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 2: foundational (blocking prerequisites)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L17" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", - "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 3: user story 1 - core tier 1 deterministic classification & cli (priority: p1) [mvp]", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L32" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", - "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 4: user story 2 - multilingual 24-case controlled benchmark suite (priority: p2)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L52" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", - "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 5: optional adapters - tier 2 (embeddings) & tier 3 (llm) (priority: p3)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L71" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", - "label": "Phase 6: Polish & Validation", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "phase 6: polish & validation", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L87" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "tasks: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", - "label": "Tests for User Story 1", - "_origin": "ast", - "community": 46, - "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", - "file_type": "document", - "node_kind": "heading", - "norm_label": "tests for user story 1", - "source_file": "specs/001-multilingual-entity-classifier/tasks.md", - "source_location": "L38" - }, { "id": "src_language", "label": "language.py", @@ -5870,88 +7794,55 @@ "source_location": "L1" }, { - "id": "classify", - "label": "classify.py", + "id": "src_classifier", + "label": "classifier.py", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", - "norm_label": "classify.py", - "source_file": "classify.py", + "norm_label": "classifier.py", + "source_file": "src/classifier.py", "source_location": "L1" }, - { - "id": "namespace", - "label": "Namespace", - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "namespace", - "source_file": "", - "source_location": "" - }, - { - "id": "src_models_py_any", - "label": "Any", - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "any", - "source_file": "", - "source_location": "" - }, { "id": "src_parser", "label": "parser.py", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "parser.py", "source_file": "src/parser.py", "source_location": "L1" }, - { - "id": "str", - "label": "str", - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "str", - "source_file": "", - "source_location": "" - }, - { - "id": "tests_test_cli", - "label": "test_cli.py", - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "code", - "norm_label": "test_cli.py", - "source_file": "tests/test_cli.py", - "source_location": "L1" - }, { "id": "tests_test_models", "label": "test_models.py", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "code", "norm_label": "test_models.py", "source_file": "tests/test_models.py", "source_location": "L1" }, + { + "id": "src_classifier_rationale_1", + "label": "Core deterministic classification engine (Tier 1 core).", + "_origin": "ast", + "community": 48, + "community_name": "classifier.py", + "file_type": "rationale", + "norm_label": "core deterministic classification engine (tier 1 core).", + "source_file": "src/classifier.py", + "source_location": "L1" + }, { "id": "src_parser_rationale_1", "label": "Markdown content parser and excerpt extraction utilities.", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "rationale", "norm_label": "markdown content parser and excerpt extraction utilities.", "source_file": "src/parser.py", @@ -5962,7 +7853,7 @@ "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "rationale", "norm_label": "remove markdown syntax markers (headers, bold, italics, links, code blocks) to...", "source_file": "src/parser.py", @@ -5973,7 +7864,7 @@ "label": "Split text into individual sentences.", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "rationale", "norm_label": "split text into individual sentences.", "source_file": "src/parser.py", @@ -5984,29 +7875,18 @@ "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "rationale", "norm_label": "extract relevant sentence excerpts from markdown text that contain any of the...", "source_file": "src/parser.py", "source_location": "L52" }, - { - "id": "tests_test_cli_rationale_1", - "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", - "_origin": "ast", - "community": 48, - "community_name": "test_models.py", - "file_type": "rationale", - "norm_label": "cli execution tests covering flags, arguments, stdout, and error handling.", - "source_file": "tests/test_cli.py", - "source_location": "L1" - }, { "id": "tests_test_models_rationale_1", "label": "Unit tests for ECP models, schema validation, and structured error handling.", "_origin": "ast", "community": 48, - "community_name": "test_models.py", + "community_name": "classifier.py", "file_type": "rationale", "norm_label": "unit tests for ecp models, schema validation, and structured error handling.", "source_file": "tests/test_models.py", @@ -6037,473 +7917,161 @@ "source_location": "L1" }, { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness", - "label": "poc-readiness.md", + "id": "specs_001_multilingual_entity_classifier_tasks_dependencies_execution_order", + "label": "Dependencies & Execution Order", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "page", - "norm_label": "poc-readiness.md", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_1_requirement_completeness_scope_boundaries", - "label": "1. Requirement Completeness & Scope Boundaries", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "1. requirement completeness & scope boundaries", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L13" + "norm_label": "dependencies & execution order", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L97" }, { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_2_requirement_clarity_decision_semantics", - "label": "2. Requirement Clarity & Decision Semantics", + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_1", + "label": "Implementation for User Story 1", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "2. requirement clarity & decision semantics", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L22" + "norm_label": "implementation for user story 1", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L42" }, { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_3_requirement_consistency_alignment", - "label": "3. Requirement Consistency & Alignment", + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_2", + "label": "Implementation for User Story 2", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "3. requirement consistency & alignment", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L31" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_4_acceptance_criteria_measurability", - "label": "4. Acceptance Criteria & Measurability", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "4. acceptance criteria & measurability", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L39" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_5_scenario_edge_case_coverage", - "label": "5. Scenario & Edge Case Coverage", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "5. scenario & edge case coverage", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L47" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_notes", - "label": "Notes", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "notes", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L56" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_poc_readiness_poc_readiness_requirements_quality_checklist_multilingual_nlp_entity_inherence_classifier", - "label": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "poc readiness & requirements quality checklist: multilingual nlp entity inherence classifier", - "source_file": "specs/001-multilingual-entity-classifier/checklists/poc-readiness.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements", - "label": "001-multilingual-entity-classifier/checklists/requirements.md", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "page", - "norm_label": "001-multilingual-entity-classifier/checklists/requirements.md", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", - "label": "Content Quality", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "content quality", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L7" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", - "label": "Feature Readiness", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "feature readiness", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L25" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements_notes", - "label": "Notes", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "notes", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L32" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", - "label": "Requirement Completeness", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "requirement completeness", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L14" - }, - { - "id": "specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", - "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "specification quality checklist: multilingual nlp entity inherence classifier", - "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_plan", - "label": "001-multilingual-entity-classifier/plan.md", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "page", - "norm_label": "001-multilingual-entity-classifier/plan.md", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_plan_complexity_tracking", - "label": "Complexity Tracking", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "complexity tracking", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L120" - }, - { - "id": "specs_001_multilingual_entity_classifier_plan_constitution_check", - "label": "Constitution Check", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "constitution check", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L43" - }, - { - "id": "specs_001_multilingual_entity_classifier_plan_documentation_this_feature", - "label": "Documentation (this feature)", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "documentation (this feature)", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", + "norm_label": "implementation for user story 2", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "source_location": "L58" }, { - "id": "specs_001_multilingual_entity_classifier_plan_implementation_plan_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)", + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_for_user_story_3", + "label": "Implementation for User Story 3", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "implementation plan: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L1" + "norm_label": "implementation for user story 3", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L77" }, { - "id": "specs_001_multilingual_entity_classifier_plan_project_structure", - "label": "Project Structure", + "id": "specs_001_multilingual_entity_classifier_tasks_implementation_strategy", + "label": "Implementation Strategy", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "project structure", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L56" + "norm_label": "implementation strategy", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L109" }, { - "id": "specs_001_multilingual_entity_classifier_plan_source_code_repository_root", - "label": "Source Code (repository root)", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_1_setup_shared_infrastructure", + "label": "Phase 1: Setup (Shared Infrastructure)", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "source code (repository root)", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L74" + "norm_label": "phase 1: setup (shared infrastructure)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L7" }, { - "id": "specs_001_multilingual_entity_classifier_plan_summary", - "label": "Summary", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_2_foundational_blocking_prerequisites", + "label": "Phase 2: Foundational (Blocking Prerequisites)", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "summary", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L9" + "norm_label": "phase 2: foundational (blocking prerequisites)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L17" }, { - "id": "specs_001_multilingual_entity_classifier_plan_technical_context", - "label": "Technical Context", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_3_user_story_1_core_tier_1_deterministic_classification_cli_priority_p1_mvp", + "label": "Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP]", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "technical context", - "source_file": "specs/001-multilingual-entity-classifier/plan.md", - "source_location": "L15" + "norm_label": "phase 3: user story 1 - core tier 1 deterministic classification & cli (priority: p1) [mvp]", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L32" }, { - "id": "specs_001_multilingual_entity_classifier_spec", - "label": "001-multilingual-entity-classifier/spec.md", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_4_user_story_2_multilingual_24_case_controlled_benchmark_suite_priority_p2", + "label": "Phase 4: User Story 2 - Multilingual 24-Case Controlled Benchmark Suite (Priority: P2)", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "page", - "norm_label": "001-multilingual-entity-classifier/spec.md", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions", - "label": "Assumptions", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "assumptions", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L127" + "norm_label": "phase 4: user story 2 - multilingual 24-case controlled benchmark suite (priority: p2)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L52" }, { - "id": "specs_001_multilingual_entity_classifier_spec_assumptions_scope", - "label": "Assumptions & Scope", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_5_optional_adapters_tier_2_embeddings_tier_3_llm_priority_p3", + "label": "Phase 5: Optional Adapters - Tier 2 (Embeddings) & Tier 3 (LLM) (Priority: P3)", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "assumptions & scope", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L125" + "norm_label": "phase 5: optional adapters - tier 2 (embeddings) & tier 3 (llm) (priority: p3)", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L71" }, { - "id": "specs_001_multilingual_entity_classifier_spec_clarifications", - "label": "Clarifications", + "id": "specs_001_multilingual_entity_classifier_tasks_phase_6_polish_validation", + "label": "Phase 6: Polish & Validation", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "clarifications", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L13" + "norm_label": "phase 6: polish & validation", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L87" }, { - "id": "specs_001_multilingual_entity_classifier_spec_explicit_out_of_scope_poc", - "label": "Explicit Out of Scope (POC)", + "id": "specs_001_multilingual_entity_classifier_tasks_tasks_multilingual_nlp_entity_inherence_classifier_poc", + "label": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "_origin": "ast", "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", "file_type": "document", "node_kind": "heading", - "norm_label": "explicit out of scope (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L132" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_feature_specification_multilingual_nlp_entity_inherence_classifier_poc", - "label": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "feature specification: multilingual nlp entity inherence classifier (poc)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L1" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_functional_requirements", - "label": "Functional Requirements", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "functional requirements", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L61" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_key_entities_data_models_domain_entities", - "label": "Key Entities *(data models & domain entities)*", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "key entities *(data models & domain entities)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L105" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_measurable_outcomes", - "label": "Measurable Outcomes", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "measurable outcomes", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L116" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_requirements_mandatory", - "label": "Requirements *(mandatory)*", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "requirements *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L59" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_session_2026_08_19", - "label": "Session 2026-08-19", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "session 2026-08-19", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L15" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_success_criteria_mandatory", - "label": "Success Criteria *(mandatory)*", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "success criteria *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L114" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_scenarios_testing_mandatory", - "label": "User Scenarios & Testing *(mandatory)*", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user scenarios & testing *(mandatory)*", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L25" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_1_classify_content_inherence_via_cli_for_an_ecp_snapshot_priority_p1", - "label": "User Story 1 - Classify Content Inherence via CLI for an ECP Snapshot (Priority: P1)", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 1 - classify content inherence via cli for an ecp snapshot (priority: p1)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L27" - }, - { - "id": "specs_001_multilingual_entity_classifier_spec_user_story_2_multilingual_language_support_edge_validation_priority_p2", - "label": "User Story 2 - Multilingual Language Support & Edge Validation (Priority: P2)", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "heading", - "norm_label": "user story 2 - multilingual language support & edge validation (priority: p2)", - "source_file": "specs/001-multilingual-entity-classifier/spec.md", - "source_location": "L44" - }, - { - "id": "specs_001_multilingual_entity_classifier_tasks", - "label": "001-multilingual-entity-classifier/tasks.md", - "_origin": "ast", - "community": 5, - "community_name": "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier", - "file_type": "document", - "node_kind": "page", - "norm_label": "001-multilingual-entity-classifier/tasks.md", + "norm_label": "tasks: multilingual nlp entity inherence classifier (poc)", "source_file": "specs/001-multilingual-entity-classifier/tasks.md", "source_location": "L1" }, + { + "id": "specs_001_multilingual_entity_classifier_tasks_tests_for_user_story_1", + "label": "Tests for User Story 1", + "_origin": "ast", + "community": 5, + "community_name": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)", + "file_type": "document", + "node_kind": "heading", + "norm_label": "tests for user story 1", + "source_file": "specs/001-multilingual-entity-classifier/tasks.md", + "source_location": "L38" + }, { "id": "examples_content_presal_pt", "label": "content_presal_pt.md", @@ -7530,48 +9098,279 @@ "source_location": "L11" }, { - "id": "scripts_extract_google_news_rationale_110", - "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", + "id": "scripts_extract_article_contents", + "label": "extract_article_contents.py", "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", - "file_type": "rationale", - "norm_label": "mapeia idioma e locale para os parametros hl, gl e ceid do google news.", - "source_file": "scripts/extract_google_news.py", - "source_location": "L110" + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "extract_article_contents.py", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L1" }, { - "id": "tests_test_extract_google_news_rationale_38", - "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", + "id": "scripts_extract_article_contents_py_any", + "label": "Any", "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_article_contents_py_namespace", + "label": "Namespace", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "namespace", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_article_contents_py_path", + "label": "Path", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_extract_article_contents", + "label": "test_extract_article_contents.py", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "test_extract_article_contents.py", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L1" + }, + { + "id": "tests_test_extract_article_contents_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "tests_test_extract_article_contents_py_path", + "label": "Path", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" + }, + { + "id": "scripts_extract_article_contents_rationale_106", + "label": "Dados completos extra\u00eddos e enriquecidos com NLP pelo motor Newspaper4k.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", "file_type": "rationale", - "norm_label": "valida o mapeamento padrao de idiomas para pares (hl, gl, ceid).", - "source_file": "tests/test_extract_google_news.py", + "norm_label": "dados completos extraidos e enriquecidos com nlp pelo motor newspaper4k.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L106" + }, + { + "id": "scripts_extract_article_contents_rationale_156", + "label": "Dados completos higienizados pelo algoritmo Readability.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "dados completos higienizados pelo algoritmo readability.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L156" + }, + { + "id": "scripts_extract_article_contents_rationale_178", + "label": "Resultado consolidado da extra\u00e7\u00e3o de um artigo.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "resultado consolidado da extracao de um artigo.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L178" + }, + { + "id": "scripts_extract_article_contents_rationale_206", + "label": "Relat\u00f3rio consolidado de sa\u00edda do processamento de um lote.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "relatorio consolidado de saida do processamento de um lote.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L206" + }, + { + "id": "scripts_extract_article_contents_rationale_232", + "label": "Motor de extra\u00e7\u00e3o baseado na biblioteca Trafilatura.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "motor de extracao baseado na biblioteca trafilatura.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L232" + }, + { + "id": "scripts_extract_article_contents_rationale_311", + "label": "Motor de extra\u00e7\u00e3o baseado no Newspaper4k com NLP.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "motor de extracao baseado no newspaper4k com nlp.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L311" + }, + { + "id": "scripts_extract_article_contents_rationale_372", + "label": "Motor de extra\u00e7\u00e3o baseado no algoritmo Readability (readability-lxml).", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "motor de extracao baseado no algoritmo readability (readability-lxml).", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L372" + }, + { + "id": "scripts_extract_article_contents_rationale_38", + "label": "Metadados originais da not\u00edcia contida no JSON de entrada.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "metadados originais da noticia contida no json de entrada.", + "source_file": "scripts/extract_article_contents.py", "source_location": "L38" }, { - "id": "tests_test_extract_google_news_rationale_61", - "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", + "id": "scripts_extract_article_contents_rationale_406", + "label": "Executa a extra\u00e7\u00e3o simult\u00e2nea pelos tr\u00eas motores de conte\u00fado com isolamento\u2026", "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "rationale", - "norm_label": "valida a sobrescrita geografica quando o argumento locale e especificado.", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L61" + "norm_label": "executa a extracao simultanea pelos tres motores de conteudo com isolamento...", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L406" }, { - "id": "tests_test_extract_google_news_rationale_79", - "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", + "id": "scripts_extract_article_contents_rationale_459", + "label": "Gerenciador de ciclo de vida e requisi\u00e7\u00f5es via Foxcape Headless.", "_origin": "ast", "community": 80, - "community_name": "get_hl_gl_ceid", + "community_name": "test_extract_article_contents.py", "file_type": "rationale", - "norm_label": "valida fallback dinamico para idiomas regionais nao listados explicitamente.", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L79" + "norm_label": "gerenciador de ciclo de vida e requisicoes via foxcape headless.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L459" + }, + { + "id": "scripts_extract_article_contents_rationale_488", + "label": "Navega at\u00e9 a URL, aguarda o carregamento do DOM e retorna (html, page_title,\u2026", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "navega ate a url, aguarda o carregamento do dom e retorna (html, page_title,...", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L488" + }, + { + "id": "scripts_extract_article_contents_rationale_510", + "label": "Escreve mensagem informativa no stderr.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "escreve mensagem informativa no stderr.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L510" + }, + { + "id": "scripts_extract_article_contents_rationale_517", + "label": "Carrega o arquivo JSON gerado pelo extrator de not\u00edcias.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "carrega o arquivo json gerado pelo extrator de noticias.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L517" + }, + { + "id": "scripts_extract_article_contents_rationale_545", + "label": "Salva o relat\u00f3rio consolidado em formato JSON com UTF-8.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "salva o relatorio consolidado em formato json com utf-8.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L545" + }, + { + "id": "scripts_extract_article_contents_rationale_559", + "label": "Executa o pipeline completo de extra\u00e7\u00e3o em lote para o arquivo de entrada.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "executa o pipeline completo de extracao em lote para o arquivo de entrada.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L559" + }, + { + "id": "scripts_extract_article_contents_rationale_58", + "label": "Dados completos extra\u00eddos pelo motor Trafilatura.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "dados completos extraidos pelo motor trafilatura.", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L58" + }, + { + "id": "tests_test_extract_article_contents_rationale_323", + "label": "Valida E2E a extra\u00e7\u00e3o real ao vivo com Foxcape e os 3 motores em lote.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "valida e2e a extracao real ao vivo com foxcape e os 3 motores em lote.", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L323" + }, + { + "id": "tests_test_extract_article_contents_rationale_367", + "label": "Valida E2E a execu\u00e7\u00e3o do CLI real de ponta a ponta.", + "_origin": "ast", + "community": 80, + "community_name": "test_extract_article_contents.py", + "file_type": "rationale", + "norm_label": "valida e2e a execucao do cli real de ponta a ponta.", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L367" }, { "id": "docs_googlenews_extractor_guia_completo", @@ -7884,6 +9683,17 @@ "source_file": "scripts/extract_google_news.py", "source_location": "L1" }, + { + "id": "scripts_extract_google_news_rationale_110", + "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "mapeia idioma e locale para os parametros hl, gl e ceid do google news.", + "source_file": "scripts/extract_google_news.py", + "source_location": "L110" + }, { "id": "scripts_extract_google_news_rationale_154", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", @@ -7950,6 +9760,17 @@ "source_file": "scripts/extract_google_news.py", "source_location": "L67" }, + { + "id": "tests_test_extract_google_news_rationale_112", + "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", + "_origin": "ast", + "community": 82, + "community_name": "extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida o parsing do feed rss, higienizacao de tags html e deduplicacao.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L112" + }, { "id": "tests_test_extract_google_news_rationale_164", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", @@ -8027,17 +9848,6 @@ "source_file": "tests/test_extract_google_news.py", "source_location": "L1" }, - { - "id": "tests_test_extract_google_news_rationale_112", - "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", - "_origin": "ast", - "community": 84, - "community_name": "test_extract_google_news.py", - "file_type": "rationale", - "norm_label": "valida o parsing do feed rss, higienizacao de tags html e deduplicacao.", - "source_file": "tests/test_extract_google_news.py", - "source_location": "L112" - }, { "id": "tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", @@ -8071,6 +9881,39 @@ "source_file": "tests/test_extract_google_news.py", "source_location": "L292" }, + { + "id": "tests_test_extract_google_news_rationale_38", + "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida o mapeamento padrao de idiomas para pares (hl, gl, ceid).", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L38" + }, + { + "id": "tests_test_extract_google_news_rationale_61", + "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida a sobrescrita geografica quando o argumento locale e especificado.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L61" + }, + { + "id": "tests_test_extract_google_news_rationale_79", + "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", + "_origin": "ast", + "community": 84, + "community_name": "test_extract_google_news.py", + "file_type": "rationale", + "norm_label": "valida fallback dinamico para idiomas regionais nao listados explicitamente.", + "source_file": "tests/test_extract_google_news.py", + "source_location": "L79" + }, { "id": "specs_002_google_news_extractor_tasks_implementation_for_user_story_1", "label": "Implementation for User Story 1", @@ -9236,26 +11079,868 @@ "source_location": "L1" }, { - "id": "argumentparser", - "label": "ArgumentParser", + "id": "readme", + "label": "README.md", "_origin": "ast", - "community": 98, - "community_name": "build_parser", - "file_type": "code", - "norm_label": "argumentparser", - "source_file": "", - "source_location": "" + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "page", + "norm_label": "readme.md", + "source_file": "README.md", + "source_location": "L1" }, { - "id": "scripts_extract_google_news_rationale_339", - "label": "Cria e configura o parser de argumentos CLI.", + "id": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. \ud83e\udde0 classificador de conteudo e inerencia (nlp / llm / ecp)", + "source_file": "README.md", + "source_location": "L78" + }, + { + "id": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", + "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. clonar o repositorio e criar ambiente virtual", + "source_file": "README.md", + "source_location": "L49" + }, + { + "id": "readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", + "label": "1. Extra\u00e7\u00e3o Completa Autom\u00e1tica", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. extracao completa automatica", + "source_file": "README.md", + "source_location": "L240" + }, + { + "id": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. river plate (argentina / espanhol / 2 paginas / salvar em arquivo)", + "source_file": "README.md", + "source_location": "L184" + }, + { + "id": "readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", + "label": "2. Amostragem R\u00e1pida (Limit 2 Not\u00edcias)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. amostragem rapida (limit 2 noticias)", + "source_file": "README.md", + "source_location": "L246" + }, + { + "id": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. cruzeiro (brasil / portugues / formatado no terminal)", + "source_file": "README.md", + "source_location": "L198" + }, + { + "id": "readme_2_extrator_de_manchetes_do_google_news", + "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. \ud83d\udcf0 extrator de manchetes do google news", + "source_file": "README.md", + "source_location": "L155" + }, + { + "id": "readme_2_instalar_depend\u00eancias", + "label": "2. Instalar Depend\u00eancias", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. instalar dependencias", + "source_file": "README.md", + "source_location": "L62" + }, + { + "id": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", + "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. baixar binarios do navegador stealth (camoufox)", + "source_file": "README.md", + "source_location": "L68" + }, + { + "id": "readme_3_destino_customizado_e_timeout_ajustado", + "label": "3. Destino Customizado e Timeout Ajustado", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. destino customizado e timeout ajustado", + "source_file": "README.md", + "source_location": "L251" + }, + { + "id": "readme_3_extrator_e_parser_multimotor_de_artigos", + "label": "3. \ud83d\udcf0 Extrator e Parser Multimotor de Artigos", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. \ud83d\udcf0 extrator e parser multimotor de artigos", + "source_file": "README.md", + "source_location": "L215" + }, + { + "id": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", + "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. formula 1 (inglaterra / ingles)", + "source_file": "README.md", + "source_location": "L203" + }, + { + "id": "readme_4_filtragem_com_jq_em_modo_silencioso", + "label": "4. Filtragem com `jq` em Modo Silencioso", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. filtragem com `jq` em modo silencioso", + "source_file": "README.md", + "source_location": "L208" + }, + { + "id": "readme_argumentos_e_flags_cli", + "label": "Argumentos e Flags CLI", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "argumentos e flags cli", + "source_file": "README.md", + "source_location": "L227" + }, + { + "id": "readme_argumentos_e_flags_de_linha_de_comando", + "label": "Argumentos e Flags de Linha de Comando", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "argumentos e flags de linha de comando", + "source_file": "README.md", + "source_location": "L169" + }, + { + "id": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", + "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "arquitetura de classificacao em 3 tiers", + "source_file": "README.md", + "source_location": "L86" + }, + { + "id": "readme_categorias_de_decis\u00e3o", + "label": "Categorias de Decis\u00e3o", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "categorias de decisao", + "source_file": "README.md", + "source_location": "L107" + }, + { + "id": "readme_diferenciais_t\u00e9cnicos", + "label": "Diferenciais T\u00e9cnicos", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "diferenciais tecnicos", + "source_file": "README.md", + "source_location": "L161" + }, + { + "id": "readme_estrutura_do_projeto", + "label": "\ud83d\udcc1 Estrutura do Projeto", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcc1 estrutura do projeto", + "source_file": "README.md", + "source_location": "L258" + }, + { + "id": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", + "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplo de ecp snapshot (`ecp_sample.json`):", + "source_file": "README.md", + "source_location": "L118" + }, + { + "id": "readme_exemplos_de_uso", + "label": "Exemplos de Uso", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplos de uso", + "source_file": "README.md", + "source_location": "L238" + }, + { + "id": "readme_exemplos_de_uso_cli", + "label": "Exemplos de Uso CLI", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplos de uso cli", + "source_file": "README.md", + "source_location": "L140" + }, + { + "id": "readme_exemplos_pr\u00e1ticos_de_uso", + "label": "Exemplos Pr\u00e1ticos de Uso", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "exemplos praticos de uso", + "source_file": "README.md", + "source_location": "L182" + }, + { + "id": "readme_formato_do_ecp_snapshot_e_markdown", + "label": "Formato do ECP Snapshot e Markdown", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "formato do ecp snapshot e markdown", + "source_file": "README.md", + "source_location": "L116" + }, + { + "id": "readme_instala\u00e7\u00e3o_e_setup", + "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\u2699\ufe0f instalacao e setup", + "source_file": "README.md", + "source_location": "L47" + }, + { + "id": "readme_licen\u00e7a", + "label": "\ud83d\udcc4 Licen\u00e7a", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcc4 licenca", + "source_file": "README.md", + "source_location": "L308" + }, + { + "id": "readme_o_que_\u00e9_e_como_funciona", + "label": "O que \u00e9 e Como Funciona", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "o que e e como funciona", + "source_file": "README.md", + "source_location": "L80" + }, + { + "id": "readme_o_que_\u00e9_e_como_funciona_157", + "label": "O que \u00e9 e Como Funciona", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "o que e e como funciona", + "source_file": "README.md", + "source_location": "L157" + }, + { + "id": "readme_tabela_de_conte\u00fados", + "label": "\ud83d\udcd1 Tabela de Conte\u00fados", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83d\udcd1 tabela de conteudos", + "source_file": "README.md", + "source_location": "L13" + }, + { + "id": "readme_testes_e_qualidade_de_c\u00f3digo", + "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83e\uddea testes e qualidade de codigo", + "source_file": "README.md", + "source_location": "L287" + }, + { + "id": "readme_textnlpclassifierapp", + "label": "\ud83e\udde0 TextNLPClassifierApp", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83e\udde0 textnlpclassifierapp", + "source_file": "README.md", + "source_location": "L1" + }, + { + "id": "readme_vis\u00e3o_geral", + "label": "\ud83c\udf1f Vis\u00e3o Geral", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "\ud83c\udf1f visao geral", + "source_file": "README.md", + "source_location": "L38" + }, + { + "id": "readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", + "label": "Vis\u00e3o Geral e Tr\u00edplice Extra\u00e7\u00e3o", + "_origin": "ast", + "community": 97, + "community_name": "\ud83e\udde0 TextNLPClassifierApp", + "file_type": "document", + "node_kind": "heading", + "norm_label": "visao geral e triplice extracao", + "source_file": "README.md", + "source_location": "L217" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction", + "label": "extraction.md", "_origin": "ast", "community": 98, - "community_name": "build_parser", - "file_type": "rationale", - "norm_label": "cria e configura o parser de argumentos cli.", - "source_file": "scripts/extract_google_news.py", - "source_location": "L339" + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "extraction.md", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_1_requirement_completeness", + "label": "1. Requirement Completeness", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. requirement completeness", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L13" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_2_requirement_clarity_non_ambiguity", + "label": "2. Requirement Clarity & Non-Ambiguity", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "2. requirement clarity & non-ambiguity", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L24" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_3_requirement_consistency_data_contracts", + "label": "3. Requirement Consistency & Data Contracts", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "3. requirement consistency & data contracts", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L33" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_4_scenario_edge_case_coverage", + "label": "4. Scenario & Edge Case Coverage", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "4. scenario & edge case coverage", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L41" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_5_non_functional_operational_readiness", + "label": "5. Non-Functional & Operational Readiness", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "5. non-functional & operational readiness", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L51" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "label": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "extraction pipeline checklist: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_checklists_extraction_notes", + "label": "Notes", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L58" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements", + "label": "003-article-content-extractor/checklists/requirements.md", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/checklists/requirements.md", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements_content_quality", + "label": "Content Quality", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "content quality", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L7" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements_feature_readiness", + "label": "Feature Readiness", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature readiness", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L25" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements_notes", + "label": "Notes", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "notes", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L32" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements_requirement_completeness", + "label": "Requirement Completeness", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirement completeness", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L14" + }, + { + "id": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "label": "Specification Quality Checklist: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "specification quality checklist: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_data_model", + "label": "003-article-content-extractor/data-model.md", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/data-model.md", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_1_inputarticle_value_object", + "label": "1.1 InputArticle (Value Object)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.1 inputarticle (value object)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L5" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_2_trafilaturadata_value_object", + "label": "1.2 TrafilaturaData (Value Object)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.2 trafilaturadata (value object)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L18" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_3_newspaperdata_value_object", + "label": "1.3 NewspaperData (Value Object)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.3 newspaperdata (value object)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L36" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_4_readabilitydata_value_object", + "label": "1.4 ReadabilityData (Value Object)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.4 readabilitydata (value object)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L54" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_5_extractedarticle_entity", + "label": "1.5 ExtractedArticle (Entity)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.5 extractedarticle (entity)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L67" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_6_extractionbatchreport_aggregate_root", + "label": "1.6 ExtractionBatchReport (Aggregate Root)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1.6 extractionbatchreport (aggregate root)", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L84" + }, + { + "id": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "label": "1. Entities & Value Objects", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "1. entities & value objects", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L3" + }, + { + "id": "specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", + "label": "Data Model: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "data model: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_spec", + "label": "003-article-content-extractor/spec.md", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "page", + "norm_label": "003-article-content-extractor/spec.md", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_spec_assumptions", + "label": "Assumptions", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "assumptions", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L109" + }, + { + "id": "specs_003_article_content_extractor_spec_clarifications", + "label": "Clarifications", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "clarifications", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L10" + }, + { + "id": "specs_003_article_content_extractor_spec_edge_cases", + "label": "Edge Cases", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "edge cases", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L63" + }, + { + "id": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "label": "Feature Specification: Article Content Multi-Engine Extractor", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "feature specification: article content multi-engine extractor", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L1" + }, + { + "id": "specs_003_article_content_extractor_spec_functional_requirements", + "label": "Functional Requirements", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "functional requirements", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L74" + }, + { + "id": "specs_003_article_content_extractor_spec_key_entities", + "label": "Key Entities", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "key entities", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L89" + }, + { + "id": "specs_003_article_content_extractor_spec_measurable_outcomes", + "label": "Measurable Outcomes", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "measurable outcomes", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L99" + }, + { + "id": "specs_003_article_content_extractor_spec_requirements_mandatory", + "label": "Requirements *(mandatory)*", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "requirements *(mandatory)*", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L72" + }, + { + "id": "specs_003_article_content_extractor_spec_session_2026_08_20", + "label": "Session 2026-08-20", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "session 2026-08-20", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L12" + }, + { + "id": "specs_003_article_content_extractor_spec_success_criteria_mandatory", + "label": "Success Criteria *(mandatory)*", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "success criteria *(mandatory)*", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L97" + }, + { + "id": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "label": "User Scenarios & Testing *(mandatory)*", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user scenarios & testing *(mandatory)*", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L19" + }, + { + "id": "specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "label": "User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 1 - extracao completa e consolidada de artigos em lote (priority: p1) \ud83c\udf1f mvp", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L21" + }, + { + "id": "specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "label": "User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 2 - resiliencia e isolamento de falhas por artigo e motor (priority: p2)", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L35" + }, + { + "id": "specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", + "label": "User Story 3 - Controle de Execu\u00e7\u00e3o via Linha de Comando e Feedback Visual (Priority: P3)", + "_origin": "ast", + "community": 98, + "community_name": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", + "file_type": "document", + "node_kind": "heading", + "norm_label": "user story 3 - controle de execucao via linha de comando e feedback visual (priority: p3)", + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L49" }, { "id": "tests_test_extract_google_news_py_fixture", @@ -9341,6 +12026,282 @@ "source_location": "L172", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_articlecrawler_crawl", + "target": "scripts_extract_article_contents_articlecrawler_start", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L492", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler_enter", + "target": "scripts_extract_article_contents_articlecrawler_start", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L481", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler_exit", + "target": "scripts_extract_article_contents_articlecrawler_close", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L485", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_trafilaturaextractor_extract", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L408", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L410", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_newspaperextractor_extract", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L424", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L426", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_readabilityextractor_extract", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L440", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extract_all_engines", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L442", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_load_search_json", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L532", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_main", + "target": "scripts_extract_article_contents_parse_arguments", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L720", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_main", + "target": "scripts_extract_article_contents_py_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L721", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_main", + "target": "scripts_extract_article_contents_process_batch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L728", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_newspaperextractor_extract", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L345", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L562", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_log_info", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L569", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L583", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L595", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_extractedarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L599", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L640", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_save_extracted_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L649", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_readabilityextractor_extract", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L391", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_trafilaturaextractor_extract", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L276", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_extract_google_news", "target": "scripts_extract_google_news_get_hl_gl_ceid", @@ -9977,6 +12938,282 @@ "source_location": "L22", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents_test_cli_main_missing_input_file", + "target": "scripts_extract_article_contents_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L313", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_cli_main_success", + "target": "scripts_extract_article_contents_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L303", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_crawler_error_isolation", + "target": "scripts_extract_article_contents_process_batch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L258", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_e2e_cli_live_execution", + "target": "tests_test_extract_article_contents_py_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L368", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_e2e_cli_live_execution", + "target": "scripts_extract_article_contents_main", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L373", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_e2e_live_article_extraction", + "target": "tests_test_extract_article_contents_py_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_e2e_live_article_extraction", + "target": "scripts_extract_article_contents_process_batch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L331", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_extract_all_engines", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L240", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_input_article_creation", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_load_search_json_invalid_file", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_load_search_json_valid", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_newspaper_extractor", + "target": "scripts_extract_article_contents_newspaperextractor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L200", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_process_batch_with_limit", + "target": "scripts_extract_article_contents_process_batch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L284", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_readability_extractor", + "target": "scripts_extract_article_contents_readabilityextractor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_extractedarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L143", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "scripts_extract_article_contents_save_extracted_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L178", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_trafilatura_extractor", + "target": "scripts_extract_article_contents_trafilaturaextractor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L191", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news_test_cli_empty_query_error", "target": "scripts_extract_google_news_main", @@ -10421,6 +13658,18 @@ "source_location": "L8", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents_sample_input_json", + "target": "tests_test_extract_article_contents_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L62", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news_sample_rss_xml", "target": "tests_test_extract_google_news_py_fixture", @@ -10433,6 +13682,78 @@ "source_location": "L31", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_extractedarticle_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extractionbatchreport_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L215", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_inputarticle_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_newspaperdata_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_readabilitydata_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L165", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_trafilaturadata_to_dict", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L80", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_extractionresult_to_dict", "target": "scripts_extract_google_news_py_any", @@ -11069,6 +14390,186 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_extractedarticle", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_main", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_newspaperextractor", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_process_batch", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_readabilityextractor", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_save_extracted_json", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents_trafilaturaextractor", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news", "target": "scripts_extract_google_news_extract_google_news", @@ -11573,6 +15074,18 @@ "source_location": "L6", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents", + "target": "scripts_extract_article_contents", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L18", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news", "target": "scripts_extract_google_news", @@ -11621,6 +15134,66 @@ "source_location": "L4", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_articlecrawler_exit", + "target": "scripts_extract_article_contents_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_load_search_json", + "target": "scripts_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L516", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_process_batch", + "target": "scripts_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_save_extracted_json", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_save_extracted_json", + "target": "scripts_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L544", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_extract_google_news", "target": "scripts_extract_google_news_searchquery", @@ -11681,9 +15254,93 @@ "source_location": "L61", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents_test_cli_main_missing_input_file", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_cli_main_success", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L296", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_crawler_error_isolation", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_load_search_json_invalid_file", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_load_search_json_valid", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_process_batch_with_limit", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_test_save_extracted_json", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L126", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news_test_cli_execution_file_output", - "target": "path", + "target": "tests_test_extract_google_news_py_path", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -11695,7 +15352,7 @@ }, { "source": "tests_test_extract_google_news_test_e2e_cli_live_file_output", - "target": "path", + "target": "tests_test_extract_google_news_py_path", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -11707,7 +15364,7 @@ }, { "source": "classify_parse_args", - "target": "namespace", + "target": "classify_py_namespace", "relation": "references", "_origin": "ast", "confidence": "EXTRACTED", @@ -11717,6 +15374,18 @@ "source_location": "L28", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_parse_arguments", + "target": "scripts_extract_article_contents_py_namespace", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "scripts/extract_article_contents.py", + "source_location": "L664", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_build_parser", "target": "argumentparser", @@ -11729,6 +15398,18 @@ "source_location": "L338", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents_sample_input_json", + "target": "tests_test_extract_article_contents_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L63", + "weight": 1.0 + }, { "source": "specify_scripts_powershell_common_format_speckitcommand", "target": "specify_scripts_powershell_common_get_invokeseparator", @@ -14160,6 +17841,226 @@ "source_location": "L9", "weight": 1.0 }, + { + "source": "docs_prd_extrator_artigos_nlp", + "target": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", + "target": "docs_prd_extrator_artigos_nlp_1_1_objetivo_do_produto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf06_consolida\u00e7\u00e3o_e_exporta\u00e7\u00e3o_de_resultados", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf07_interface_de_linha_de_comando_cli_e_logs_em_tempo_real", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf08_toler\u00e2ncia_a_falhas_e_resili\u00eancia", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf01_ingest\u00e3o_de_arquivo_json_de_not\u00edcias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf02_navega\u00e7\u00e3o_e_coleta_com_foxcape_obrigat\u00f3rio", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf03_extra\u00e7\u00e3o_m\u00e1xima_com_trafilatura", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf04_extra\u00e7\u00e3o_m\u00e1xima_com_newspaper4k", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "target": "docs_prd_extrator_artigos_nlp_rf05_extra\u00e7\u00e3o_com_readability_readability_lxml", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", + "target": "docs_prd_extrator_artigos_nlp_6_1_esquema_do_json_de_entrada_input", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", + "target": "docs_prd_extrator_artigos_nlp_6_2_esquema_do_json_consolidado_de_sa\u00edda_output", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L173", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_5_requisitos_n\u00e3o_funcionais_nfr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_7_depend\u00eancias_do_projeto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_8_crit\u00e9rios_de_aceite", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L246", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_2_personas_e_casos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_3_arquitetura_e_fluxo_do_sistema", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", + "target": "docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/prd_extrator_artigos_nlp.md", + "source_location": "L58", + "weight": 1.0 + }, { "source": "examples_content_northvolt_de", "target": "examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", @@ -14193,6 +18094,556 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "readme", + "target": "readme_textnlpclassifierapp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_categorias_de_decis\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L107", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_formato_do_ecp_snapshot_e_markdown", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_exemplos_de_uso_cli", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_o_que_\u00e9_e_como_funciona", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "target": "readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_o_que_\u00e9_e_como_funciona_157", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L157", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_diferenciais_t\u00e9cnicos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L161", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_argumentos_e_flags_de_linha_de_comando", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L169", + "weight": 1.0 + }, + { + "source": "readme_2_extrator_de_manchetes_do_google_news", + "target": "readme_exemplos_pr\u00e1ticos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "readme_3_extrator_e_parser_multimotor_de_artigos", + "target": "readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "readme_3_extrator_e_parser_multimotor_de_artigos", + "target": "readme_argumentos_e_flags_cli", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L227", + "weight": 1.0 + }, + { + "source": "readme_3_extrator_e_parser_multimotor_de_artigos", + "target": "readme_exemplos_de_uso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "readme_exemplos_de_uso", + "target": "readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L240", + "weight": 1.0 + }, + { + "source": "readme_exemplos_de_uso", + "target": "readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L246", + "weight": 1.0 + }, + { + "source": "readme_exemplos_de_uso", + "target": "readme_3_destino_customizado_e_timeout_ajustado", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L198", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L203", + "weight": 1.0 + }, + { + "source": "readme_exemplos_pr\u00e1ticos_de_uso", + "target": "readme_4_filtragem_com_jq_em_modo_silencioso", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L208", + "weight": 1.0 + }, + { + "source": "readme_formato_do_ecp_snapshot_e_markdown", + "target": "readme_exemplo_de_ecp_snapshot_ecp_sample_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_2_instalar_depend\u00eancias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "readme_instala\u00e7\u00e3o_e_setup", + "target": "readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_tabela_de_conte\u00fados", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_2_extrator_de_manchetes_do_google_news", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_3_extrator_e_parser_multimotor_de_artigos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L215", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_estrutura_do_projeto", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L258", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_testes_e_qualidade_de_c\u00f3digo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_licen\u00e7a", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L308", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_vis\u00e3o_geral", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_instala\u00e7\u00e3o_e_setup", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "readme_textnlpclassifierapp", + "target": "readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_extractedarticle", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L177", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L205", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_trafilaturaextractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_newspaperextractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L310", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_readabilityextractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L371", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L403", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L458", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_log_info", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L509", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L516", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_save_extracted_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_process_batch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_parse_arguments", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L664", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents", + "target": "scripts_extract_article_contents_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L718", + "weight": 1.0 + }, { "source": "scripts_extract_google_news", "target": "scripts_extract_google_news_get_hl_gl_ceid", @@ -16932,6 +21383,963 @@ "source_location": "L70", "weight": 1.0 }, + { + "source": "specs_003_article_content_extractor_checklists_extraction", + "target": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_1_requirement_completeness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_2_requirement_clarity_non_ambiguity", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_3_requirement_consistency_data_contracts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_4_scenario_edge_case_coverage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_5_non_functional_operational_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_extraction_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_requirements", + "target": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_requirements_requirement_completeness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_requirements_feature_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_requirements_notes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_checklists_requirements_content_quality", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_cli_contract", + "target": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_cli_contract_2_argumentos_e_flags", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_cli_contract_3_c\u00f3digos_de_sa\u00edda_exit_codes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_cli_contract_1_comando_de_execu\u00e7\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_cli_contract_4_comportamento_de_streams_i_o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_json_schema", + "target": "specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_json_schema_2_schema_de_sa\u00edda_output_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_contracts_json_schema_1_schema_de_entrada_input_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model", + "target": "specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_2_trafilaturadata_value_object", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_3_newspaperdata_value_object", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_1_inputarticle_value_object", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_4_readabilitydata_value_object", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_5_extractedarticle_entity", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "target": "specs_003_article_content_extractor_data_model_1_6_extractionbatchreport_aggregate_root", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_data_model_1_entities_value_objects", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/data-model.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan", + "target": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_phases", + "target": "specs_003_article_content_extractor_plan_phase_0_outline_research_completed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_phases", + "target": "specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_phases", + "target": "specs_003_article_content_extractor_plan_phase_2_tasks_execution_next_speckit_tasks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_plan_technical_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_plan_constitution_check", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_plan_project_structure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_plan_implementation_phases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_plan_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_project_structure", + "target": "specs_003_article_content_extractor_plan_documentation_this_feature", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_plan_project_structure", + "target": "specs_003_article_content_extractor_plan_source_code_layout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/plan.md", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart", + "target": "specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "target": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_com_amostragem_r\u00e1pida_limit_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "target": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_2_caminho_customizado_de_sa\u00edda", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "target": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_3_modo_silencioso_silent", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "target": "specs_003_article_content_extractor_quickstart_cen\u00e1rio_4_resili\u00eancia_contra_urls_inv\u00e1lidas", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_quickstart_1_pr\u00e9_requisitos", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_quickstart_3_valida\u00e7\u00e3o_automatizada_de_testes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/quickstart.md", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research", + "target": "specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_2_orquestra\u00e7\u00e3o_tripla_de_extra\u00e7\u00e3o_de_conte\u00fado_nlp_web_scraping", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_3_resili\u00eancia_e_isolamento_de_falhas_por_camada", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_4_heran\u00e7a_inteligente_de_idioma_para_nlp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_5_gerenciamento_de_mem\u00f3ria_e_descarte_do_raw_html", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_6_segrega\u00e7\u00e3o_de_streams_e_feedback_visual_em_stderr", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "target": "specs_003_article_content_extractor_research_decision_1_motor_de_navega\u00e7\u00e3o_e_renderiza\u00e7\u00e3o_com_foxcape_em_sess\u00e3o_\u00fanica", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/research.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec", + "target": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_clarifications", + "target": "specs_003_article_content_extractor_spec_session_2026_08_20", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_spec_clarifications", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_spec_assumptions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_spec_requirements_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_spec_success_criteria_mandatory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_requirements_mandatory", + "target": "specs_003_article_content_extractor_spec_functional_requirements", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_requirements_mandatory", + "target": "specs_003_article_content_extractor_spec_key_entities", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_success_criteria_mandatory", + "target": "specs_003_article_content_extractor_spec_measurable_outcomes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", + "target": "specs_003_article_content_extractor_spec_edge_cases", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/spec.md", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks", + "target": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_dependencies_execution_order", + "target": "specs_003_article_content_extractor_tasks_oportunidades_de_execu\u00e7\u00e3o_paralela", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_implementation_strategy", + "target": "specs_003_article_content_extractor_tasks_mvp_first_user_story_1_only", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_implementation_strategy", + "target": "specs_003_article_content_extractor_tasks_entrega_incremental", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "target": "specs_003_article_content_extractor_tasks_testes_da_user_story_1_tdd", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "target": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_1", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "target": "specs_003_article_content_extractor_tasks_testes_da_user_story_2_tdd", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "target": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", + "target": "specs_003_article_content_extractor_tasks_testes_da_user_story_3_tdd", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", + "target": "specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_1_setup_dependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_dependencies_execution_order", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L102", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_implementation_strategy", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_2_foundational_estruturas_e_modelos_base", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", + "target": "specs_003_article_content_extractor_tasks_phase_6_polish_valida\u00e7\u00e3o_final", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/tasks.md", + "source_location": "L91", + "weight": 1.0 + }, { "source": "src_adapters_base", "target": "src_adapters_base_basenlpadapter", @@ -17658,6 +23066,182 @@ "source_location": "L9", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_load_search_json_valid", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_load_search_json_invalid_file", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_save_extracted_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_trafilatura_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_newspaper_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L199", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_readability_extractor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L211", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_extract_all_engines", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L221", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L235", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_crawler_error_isolation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_process_batch_with_limit", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_cli_main_success", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L296", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_cli_main_missing_input_file", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_e2e_live_article_extraction", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_e2e_cli_live_execution", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L366", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_sample_input_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents", + "target": "tests_test_extract_article_contents_test_input_article_creation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L96", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news", "target": "tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", @@ -18087,6 +23671,171 @@ "source_location": "L18", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_start", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L466", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_close", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L472", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_enter", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L480", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_exit", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_articlecrawler", + "target": "scripts_extract_article_contents_articlecrawler_crawl", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L487", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extractedarticle", + "target": "scripts_extract_article_contents_extractedarticle_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_extractionbatchreport", + "target": "scripts_extract_article_contents_extractionbatchreport_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L215", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_inputarticle", + "target": "scripts_extract_article_contents_inputarticle_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_newspaperdata", + "target": "scripts_extract_article_contents_newspaperdata_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_newspaperextractor", + "target": "scripts_extract_article_contents_newspaperextractor_extract", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_readabilitydata", + "target": "scripts_extract_article_contents_readabilitydata_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L165", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_readabilityextractor", + "target": "scripts_extract_article_contents_readabilityextractor_extract", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L375", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_trafilaturadata", + "target": "scripts_extract_article_contents_trafilaturadata_to_dict", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_trafilaturaextractor", + "target": "scripts_extract_article_contents_trafilaturaextractor_extract", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L235", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_extractionresult", "target": "scripts_extract_google_news_extractionresult_to_dict", @@ -18373,6 +24122,182 @@ "source_location": "L37", "weight": 1.0 }, + { + "source": "scripts_extract_article_contents_rationale_106", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_156", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L156", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_178", + "target": "scripts_extract_article_contents_extractedarticle", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L178", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_206", + "target": "scripts_extract_article_contents_extractionbatchreport", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L206", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_232", + "target": "scripts_extract_article_contents_trafilaturaextractor", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L232", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_311", + "target": "scripts_extract_article_contents_newspaperextractor", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_372", + "target": "scripts_extract_article_contents_readabilityextractor", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L372", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_38", + "target": "scripts_extract_article_contents_inputarticle", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_406", + "target": "scripts_extract_article_contents_extract_all_engines", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L406", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_459", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L459", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_488", + "target": "scripts_extract_article_contents_articlecrawler_crawl", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L488", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_510", + "target": "scripts_extract_article_contents_log_info", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_517", + "target": "scripts_extract_article_contents_load_search_json", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L517", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_545", + "target": "scripts_extract_article_contents_save_extracted_json", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L545", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_559", + "target": "scripts_extract_article_contents_process_batch", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L559", + "weight": 1.0 + }, + { + "source": "scripts_extract_article_contents_rationale_58", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/extract_article_contents.py", + "source_location": "L58", + "weight": 1.0 + }, { "source": "scripts_extract_google_news_rationale_110", "target": "scripts_extract_google_news_get_hl_gl_ceid", @@ -18934,6 +24859,28 @@ "source_location": "L1", "weight": 1.0 }, + { + "source": "tests_test_extract_article_contents_rationale_323", + "target": "tests_test_extract_article_contents_test_e2e_live_article_extraction", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L323", + "weight": 1.0 + }, + { + "source": "tests_test_extract_article_contents_rationale_367", + "target": "tests_test_extract_article_contents_test_e2e_cli_live_execution", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L367", + "weight": 1.0 + }, { "source": "tests_test_extract_google_news_rationale_1", "target": "tests_test_extract_google_news", @@ -19331,39 +25278,36 @@ "weight": 1.0 }, { - "source": "classify_emit_error", - "target": "path", - "relation": "calls", + "source": "specs_003_article_content_extractor_checklists_extraction", + "target": "specs_003_article_content_extractor_data_model", + "relation": "references", "_origin": "ast", - "confidence": "INFERRED", - "confidence_score": 0.85, - "context": "call", - "source_file": "classify.py", - "source_location": "L88", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L5", "weight": 1.0 }, { - "source": "classify_main", - "target": "path", - "relation": "calls", + "source": "specs_003_article_content_extractor_checklists_extraction", + "target": "specs_003_article_content_extractor_spec", + "relation": "references", "_origin": "ast", - "confidence": "INFERRED", - "confidence_score": 0.85, - "context": "call", - "source_file": "classify.py", - "source_location": "L104", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/extraction.md", + "source_location": "L5", "weight": 1.0 }, { - "source": "scripts_extract_google_news_main", - "target": "path", - "relation": "calls", + "source": "specs_003_article_content_extractor_checklists_requirements", + "target": "specs_003_article_content_extractor_spec", + "relation": "references", "_origin": "ast", - "confidence": "INFERRED", - "confidence_score": 0.85, - "context": "call", - "source_file": "scripts/extract_google_news.py", - "source_location": "L447", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "specs/003-article-content-extractor/checklists/requirements.md", + "source_location": "L5", "weight": 1.0 }, { @@ -19653,6 +25597,72 @@ "source_location": "L71", "weight": 0.8 }, + { + "source": "tests_test_extract_article_contents_test_cli_main_success", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L300", + "weight": 0.8 + }, + { + "source": "tests_test_extract_article_contents_test_crawler_error_isolation", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L256", + "weight": 0.8 + }, + { + "source": "tests_test_extract_article_contents_test_newspaper_extractor", + "target": "scripts_extract_article_contents_newspaperdata", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L204", + "weight": 0.8 + }, + { + "source": "tests_test_extract_article_contents_test_process_batch_with_limit", + "target": "scripts_extract_article_contents_articlecrawler", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L281", + "weight": 0.8 + }, + { + "source": "tests_test_extract_article_contents_test_readability_extractor", + "target": "scripts_extract_article_contents_readabilitydata", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L214", + "weight": 0.8 + }, + { + "source": "tests_test_extract_article_contents_test_trafilatura_extractor", + "target": "scripts_extract_article_contents_trafilaturadata", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "tests/test_extract_article_contents.py", + "source_location": "L193", + "weight": 0.8 + }, { "source": "tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "target": "scripts_extract_google_news_extractionresult", @@ -19732,5 +25742,5 @@ } ], "hyperedges": [], - "built_at_commit": "67cc40f91af76783f3463a6bb456b68eb159af5b" + "built_at_commit": "6e3d57619b8be1628f85090f1d20395cc0fd20e4" } \ No newline at end of file diff --git a/graphify-out/2026-08-20/manifest.json b/graphify-out/2026-08-20/manifest.json index c0b4294..00a1c93 100644 --- a/graphify-out/2026-08-20/manifest.json +++ b/graphify-out/2026-08-20/manifest.json @@ -420,9 +420,9 @@ "semantic_hash": "" }, "requirements.txt": { - "mtime": 1787236111.876247, - "seen": 1787236262.0105975, - "ast_hash": "9fb7e3f8ecb04ff30d650c772f509557", + "mtime": 1787240110.13472, + "seen": 1787240516.5993943, + "ast_hash": "f5d99630fa9c93c5fbaa44814f107e70", "semantic_hash": "" }, "tests/fixtures/benchmark_24/de/contextual.md": { @@ -652,5 +652,89 @@ "seen": 1787235020.6850297, "ast_hash": "627a6c953b250083ebe76ee74d605bb5", "semantic_hash": "" + }, + "README.md": { + "mtime": 1787240502.4633865, + "seen": 1787240516.5990582, + "ast_hash": "a075f140e2dd8383bec3991f92b32b26", + "semantic_hash": "" + }, + "scripts/extract_article_contents.py": { + "mtime": 1787241061.3097162, + "seen": 1787241108.1811028, + "ast_hash": "08cd37738da1500b6912ffa1fb2fc0cc", + "semantic_hash": "" + }, + "tests/test_extract_article_contents.py": { + "mtime": 1787240910.5980105, + "seen": 1787241108.1826632, + "ast_hash": "98cf3b30fa6ce044d943eff381eaf8a7", + "semantic_hash": "" + }, + "docs/prd_extrator_artigos_nlp.md": { + "mtime": 1787237774.0092583, + "seen": 1787240516.5991437, + "ast_hash": "c90f25764acefb91f1160feaf497fb33", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/checklists/extraction.md": { + "mtime": 1787239873.797626, + "seen": 1787240516.6008725, + "ast_hash": "3c78fb563727a7f6f23240dcaad3c010", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/checklists/requirements.md": { + "mtime": 1787237950.8140705, + "seen": 1787240516.600874, + "ast_hash": "16b2bf7a7910722a7aa6c57cdcc31f1c", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/contracts/cli-contract.md": { + "mtime": 1787239569.0560138, + "seen": 1787240516.6008754, + "ast_hash": "9326b1b3c124ad41636c3fae5c9de8b5", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/contracts/json-schema.md": { + "mtime": 1787239578.9314032, + "seen": 1787240516.6008763, + "ast_hash": "93f1da07b16c61de15dc93071434d145", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/data-model.md": { + "mtime": 1787239558.2362826, + "seen": 1787240516.6008773, + "ast_hash": "03ed32de948199c9a498c486e7bdafbd", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/plan.md": { + "mtime": 1787239601.395844, + "seen": 1787240516.6008782, + "ast_hash": "406c3ebad1d32984c1b98f8a9b7ae9f1", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/quickstart.md": { + "mtime": 1787239589.9896657, + "seen": 1787240516.6008794, + "ast_hash": "7cac454150d33dad67f683367fca749f", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/research.md": { + "mtime": 1787239545.8330145, + "seen": 1787240516.6008804, + "ast_hash": "beef81df32e2dc16798ece67726daa95", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/spec.md": { + "mtime": 1787239197.9064422, + "seen": 1787240516.6008813, + "ast_hash": "9fd196b7ba4d9ba7adb2cad25d094764", + "semantic_hash": "" + }, + "specs/003-article-content-extractor/tasks.md": { + "mtime": 1787240464.6520643, + "seen": 1787240516.6008823, + "ast_hash": "d95c4763728496703cd89590288a2bed", + "semantic_hash": "" } } \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 920c7e5..0f0e2ff 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - TextNLPClassifierApp (2026-08-20) ## Corpus Check -- 148 files · ~67,357 words +- 161 files · ~78,549 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 802 nodes · 957 edges · 104 communities (66 shown, 38 thin omitted) -- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 36 edges (avg confidence: 0.94) +- 1000 nodes · 1220 edges · 115 communities (77 shown, 38 thin omitted) +- Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 39 edges (avg confidence: 0.95) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `67cc40f9` +- Built from commit: `6e3d5761` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -56,10 +56,10 @@ - 1. Input Schemas - 2. Basic CLI Usage Examples - 2. Standard Streams & Exit Codes -- ClassificationResult +- classifier.py - InherenceClassifier - detect_language -- test_models.py +- ClassificationError - content_northvolt_de.md - content_presal_pt.md - content_tangential_es.md @@ -91,7 +91,7 @@ - pt/tangential.md - tests/__init__.py - text-nlp-classifier -- get_hl_gl_ceid +- test_extract_article_contents.py - Extrator de Notícias do Google News — Guia Completo de Funcionamento - extract_google_news.py - ExtractionResult @@ -108,41 +108,51 @@ - Specification Quality Checklist: Google News Headlines Extractor - CLI Contract: Google News Headlines Extractor - 🧠 TextNLPClassifierApp -- build_parser +- Extraction Pipeline Checklist: Article Content Multi-Engine Extractor - sample_rss_xml -- classifier.py +- main - ECPSnapshot - Feature Specification: Multilingual NLP Entity Inherence Classifier (POC) -- main +- 4. Requisitos Funcionais (FR) +- Tasks: Article Content Multi-Engine Extractor +- models.py +- Implementation Plan: Article Content Multi-Engine Extractor +- 2. Cenários de Validação +- 1. Technical Decisions & Tradeoffs +- Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC) +- POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier +- Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier +- CLI Contract: Article Content Multi-Engine Extractor +- JSON Schema Contract: Article Content Multi-Engine Extractor ## God Nodes (most connected - your core abstractions) 1. `ECPSnapshot` - 31 edges 2. `InherenceClassifier` - 25 edges -3. `DecisionCategory` - 18 edges +3. `DecisionCategory` - 17 edges 4. `ClassificationResult` - 17 edges -5. `main()` - 14 edges +5. `process_batch()` - 15 edges 6. `LocalEmbeddingsAdapter` - 14 edges 7. `LLMFallbackAdapter` - 14 edges 8. `detect_language()` - 14 edges -9. `Tasks: [FEATURE NAME]` - 13 edges -10. `SearchQuery` - 12 edges +9. `main()` - 13 edges +10. `ArticleCrawler` - 13 edges ## Surprising Connections (you probably didn't know these) - `main()` --uses--> `ECPSnapshot` [INFERRED] classify.py → src/models.py -- `main()` --uses--> `ErrorCode` [INFERRED] - classify.py → src/models.py - `test_extract_google_news_orchestration_mocked()` --uses--> `ExtractionResult` [INFERRED] tests/test_extract_google_news.py → scripts/extract_google_news.py - `classifier()` --uses--> `InherenceClassifier` [INFERRED] tests/test_benchmark_24.py → src/classifier.py - `test_classification_result_serialization()` --uses--> `DecisionCategory` [INFERRED] tests/test_models.py → src/models.py +- `test_classification_error_serialization()` --uses--> `ErrorCode` [INFERRED] + tests/test_models.py → src/models.py ## Import Cycles - None detected. -## Communities (104 total, 38 thin omitted) +## Communities (115 total, 38 thin omitted) ### Community 0 - "Task Planning" Cohesion: 0.07 @@ -165,8 +175,8 @@ Cohesion: 0.08 Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more) ### Community 5 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)" -Cohesion: 0.06 -Nodes (33): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+25 more) +Cohesion: 0.15 +Nodes (13): Dependencies & Execution Order, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Phase 1: Setup (Shared Infrastructure), Phase 2: Foundational (Blocking Prerequisites), Phase 3: User Story 1 - Core Tier 1 Deterministic Classification & CLI (Priority: P1) [MVP] (+5 more) ### Community 6 - "Feature Specification Template" Cohesion: 0.15 @@ -265,8 +275,8 @@ Cohesion: 0.50 Nodes (3): Boundaries, Output, Scan ### Community 40 - "main" -Cohesion: 0.19 -Nodes (14): CaptureFixture, Path, main(), Ponto de entrada do script CLI., Valida execução padrão do CLI com saída JSON no stdout., Valida gravação em arquivo com criação automática de diretórios pais., Valida tratamento de erro e código de saída 1 para parâmetro vazio., Valida tratamento de erro e código de saída 2 para falhas de rede. (+6 more) +Cohesion: 0.14 +Nodes (17): ArgumentParser, CaptureFixture, build_parser(), main(), Cria e configura o parser de argumentos CLI., Ponto de entrada do script CLI., Path, Valida execução padrão do CLI com saída JSON no stdout. (+9 more) ### Community 41 - "1. Technical Decisions & Tradeoffs" Cohesion: 0.22 @@ -284,41 +294,41 @@ Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2 Cohesion: 0.29 Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC) -### Community 45 - "ClassificationResult" -Cohesion: 0.10 -Nodes (18): ABC, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms., Optionally refine an ambiguous classification result., LocalEmbeddingsAdapter (+10 more) +### Community 45 - "classifier.py" +Cohesion: 0.14 +Nodes (9): LocalEmbeddingsAdapter, Optional adapter for local multilingual semantic vector embeddings., LLMFallbackAdapter, Optional adapter for LLM fallback boundary disambiguation., Core deterministic classification engine (Tier 1 core)., Unit tests for optional adapter interfaces (Tier 2 / Tier 3)., test_classifier_with_adapter_flags(), test_embeddings_adapter_interface() (+1 more) ### Community 46 - "InherenceClassifier" Cohesion: 0.12 -Nodes (27): InherenceClassifier, Tier 1 Deterministic NLP Entity Inherence Classifier., DecisionCategory, RelatedEntity, Adversarial and robustness test suite for Multilingual NLP Entity Inherence…, Run CLI via subprocess with empty content and verify error code and exit code., Content about city/state governance of São Paulo against ECP for São Paulo FC., Run CLI via subprocess with missing target_name and verify error payload. (+19 more) +Nodes (27): InherenceClassifier, Tier 1 Deterministic NLP Entity Inherence Classifier., DecisionCategory, RelatedEntity, Adversarial and robustness test suite for Multilingual NLP Entity Inherence…, Run CLI via subprocess without --output and verify stdout is pure parseable…, Run CLI via subprocess with empty content and verify error code and exit code., Content about city/state governance of São Paulo against ECP for São Paulo FC. (+19 more) ### Community 47 - "detect_language" -Cohesion: 0.14 -Nodes (20): count_phrase_occurrences(), match_phrase_in_text(), Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text., detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization. (+12 more) +Cohesion: 0.09 +Nodes (30): count_phrase_occurrences(), match_phrase_in_text(), Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text., Classify inherence of content against an ECP snapshot., detect_language(), extract_words(), normalize_text() (+22 more) -### Community 48 - "test_models.py" -Cohesion: 0.21 -Nodes (12): Classify inherence of content against an ECP snapshot., extract_evidence_snippets(), extract_sentences(), Markdown content parser and excerpt extraction utilities., Remove markdown syntax markers (headers, bold, italics, links, code blocks) to…, Split text into individual sentences., Extract relevant sentence excerpts from Markdown text that contain any of the…, strip_markdown() (+4 more) +### Community 48 - "ClassificationError" +Cohesion: 0.29 +Nodes (3): ClassificationError, Any, test_classification_error_serialization() -### Community 80 - "get_hl_gl_ceid" -Cohesion: 0.25 -Nodes (8): get_hl_gl_ceid(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado., Valida fallback dinâmico para idiomas regionais não listados explicitamente., test_get_hl_gl_ceid_default_mappings(), test_get_hl_gl_ceid_dynamic_fallback(), test_get_hl_gl_ceid_with_custom_locale() +### Community 80 - "test_extract_article_contents.py" +Cohesion: 0.06 +Nodes (56): ArticleCrawler, extract_all_engines(), ExtractedArticle, ExtractionBatchReport, InputArticle, load_search_json(), log_info(), main() (+48 more) ### Community 81 - "Extrator de Notícias do Google News — Guia Completo de Funcionamento" Cohesion: 0.08 Nodes (24): 1. Visão geral (arquitetura), 2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`), 2.2 Value Object de validação (`googlenews_etl/domain/entities/search_query.py`), 2. Entrada, 3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`), 3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`), 3.3.1 Inicialização: sessão HTTP com impersonação de browser, 3.3.2 Mapeamento idioma → parâmetros `hl`/`gl` (`_get_hl_gl`) (+16 more) ### Community 82 - "extract_google_news.py" -Cohesion: 0.20 -Nodes (14): extract_google_news(), _fetch_rss_content(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Remove pontuação e espaços extras para comparação de redundância., Parseia o XML do RSS do Google News e extrai os itens estruturados., Resolve em paralelo as URLs intermediárias do Google News para os links finais… (+6 more) +Cohesion: 0.15 +Nodes (18): extract_google_news(), _fetch_rss_content(), get_hl_gl_ceid(), NewsArticle, _normalize_text_for_comparison(), parse_google_news_rss(), Mapeia idioma e locale para os parâmetros hl, gl e ceid do Google News., Remove pontuação e espaços extras para comparação de redundância. (+10 more) ### Community 83 - "ExtractionResult" Cohesion: 0.29 Nodes (5): ExtractionResult, Any, Resultado consolidado da extração., Valida E2E o fluxo completo de busca, parsing e resolução de URLs reais ao vivo., test_e2e_extract_google_news_live_pipeline() ### Community 84 - "test_extract_google_news.py" -Cohesion: 0.21 -Nodes (11): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida o parsing do feed RSS, higienização de tags HTML e deduplicação., Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, test_e2e_resolve_real_google_news_url() (+3 more) +Cohesion: 0.15 +Nodes (15): Resolve a URL intermediária do Google News para a URL real do veículo., resolve_article_url(), Testes unitários e de integração para o Extrator de Manchetes do Google News.…, Valida fallback gracioso de URL quando não é link do Google News ou em erro., Valida resolução bem-sucedida de URL do Google News para o portal destino., Valida E2E que o decodificador resolve uma URL real do Google News para o…, Valida o mapeamento padrão de idiomas para pares (hl, gl, ceid)., Valida a sobrescrita geográfica quando o argumento locale é especificado. (+7 more) ### Community 85 - "Implementation Tasks: Google News Headlines Extractor" Cohesion: 0.14 @@ -361,47 +371,87 @@ Cohesion: 0.33 Nodes (6): 1. Comando e Argumentos, 2. Códigos de Saída (Exit Codes), 3. Protocolo de Streams (Stdout / Stderr), Argumentos de Linha de Comando, CLI Contract: Google News Headlines Extractor, Sintaxe ### Community 97 - "🧠 TextNLPClassifierApp" -Cohesion: 0.07 -Nodes (26): 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP), 1. Clonar o Repositório e Criar Ambiente Virtual, 1. River Plate (Argentina / Espanhol / 2 Páginas / Salvar em Arquivo), 2. Cruzeiro (Brasil / Português / Formatado no Terminal), 2. 📰 Extrator de Manchetes do Google News, 2. Instalar Dependências, 3. Baixar Binários do Navegador Stealth (Camoufox), 3. Fórmula 1 (Inglaterra / Inglês) (+18 more) +Cohesion: 0.06 +Nodes (33): 1. 🧠 Classificador de Conteúdo e Inerência (NLP / LLM / ECP), 1. Clonar o Repositório e Criar Ambiente Virtual, 1. Extração Completa Automática, 1. River Plate (Argentina / Espanhol / 2 Páginas / Salvar em Arquivo), 2. Amostragem Rápida (Limit 2 Notícias), 2. Cruzeiro (Brasil / Português / Formatado no Terminal), 2. 📰 Extrator de Manchetes do Google News, 2. Instalar Dependências (+25 more) -### Community 98 - "build_parser" -Cohesion: 0.67 -Nodes (3): ArgumentParser, build_parser(), Cria e configura o parser de argumentos CLI. +### Community 98 - "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor" +Cohesion: 0.05 +Nodes (34): 1. Requirement Completeness, 2. Requirement Clarity & Non-Ambiguity, 3. Requirement Consistency & Data Contracts, 4. Scenario & Edge Case Coverage, 5. Non-Functional & Operational Readiness, Extraction Pipeline Checklist: Article Content Multi-Engine Extractor, Notes, Content Quality (+26 more) ### Community 99 - "sample_rss_xml" Cohesion: 0.67 Nodes (3): fixture, Fixture que fornece o conteúdo do XML de exemplo para testes offline., sample_rss_xml() -### Community 100 - "classifier.py" +### Community 100 - "main" Cohesion: 0.23 -Nodes (9): emit_error(), Enum, Core deterministic classification engine (Tier 1 core)., ClassificationError, ErrorCode, MatchedGraphEntity, Data models and validation schemas for Multilingual NLP Entity Inherence…, str (+1 more) +Nodes (13): emit_error(), main(), parse_args(), Namespace, Enum, ErrorCode, str, CLI execution tests covering flags, arguments, stdout, and error handling. (+5 more) ### Community 101 - "ECPSnapshot" -Cohesion: 0.20 -Nodes (10): parametrize, ECPSnapshot, Any, classifier(), fixture, Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence…, test_benchmark_case(), test_ecp_snapshot_defaults() (+2 more) +Cohesion: 0.22 +Nodes (11): parametrize, ECPSnapshot, classifier(), fixture, Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence…, test_benchmark_case(), Unit tests for ECP models, schema validation, and structured error handling., test_classification_result_serialization() (+3 more) ### Community 102 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)" Cohesion: 0.14 Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more) -### Community 103 - "main" -Cohesion: 0.31 -Nodes (9): main(), parse_args(), Namespace, CLI execution tests covering flags, arguments, stdout, and error handling., test_cli_empty_content_file(), test_cli_missing_ecp_file(), test_cli_missing_required_ecp_field(), test_cli_output_file() (+1 more) +### Community 103 - "4. Requisitos Funcionais (FR)" +Cohesion: 0.10 +Nodes (20): 1.1 Objetivo do Produto, 1. Visão Geral e Contexto, 2. Personas e Casos de Uso, 3. Arquitetura e Fluxo do Sistema, 4. Requisitos Funcionais (FR), 5. Requisitos Não Funcionais (NFR), 6.1 Esquema do JSON de Entrada (`Input`), 6.2 Esquema do JSON Consolidado de Saída (`Output`) (+12 more) + +### Community 104 - "Tasks: Article Content Multi-Engine Extractor" +Cohesion: 0.11 +Nodes (18): Dependencies & Execution Order, Entrega Incremental, Implementation Strategy, Implementação da User Story 1, Implementação da User Story 2, Implementação da User Story 3, MVP First (User Story 1 Only), Oportunidades de Execução Paralela (+10 more) + +### Community 105 - "models.py" +Cohesion: 0.16 +Nodes (12): ABC, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms., Optionally refine an ambiguous classification result., Optional local vector embeddings adapter (Tier 2). Disabled by default.… (+4 more) + +### Community 106 - "Implementation Plan: Article Content Multi-Engine Extractor" +Cohesion: 0.17 +Nodes (11): Constitution Check, Documentation (this feature), Implementation Phases, Implementation Plan: Article Content Multi-Engine Extractor, Phase 0: Outline & Research *(Completed)*, Phase 1: Design & Contracts *(Completed)*, Phase 2: Tasks & Execution *(Completed)*, Project Structure (+3 more) + +### Community 107 - "2. Cenários de Validação" +Cohesion: 0.22 +Nodes (8): 1. Pré-requisitos, 2. Cenários de Validação, 3. Validação Automatizada de Testes, Cenário 1: Extração com Amostragem Rápida (Limit 2), Cenário 2: Caminho Customizado de Saída, Cenário 3: Modo Silencioso (`--silent`), Cenário 4: Resiliência contra URLs Inválidas, Quickstart & Validation Guide: Article Content Multi-Engine Extractor + +### Community 108 - "1. Technical Decisions & Tradeoffs" +Cohesion: 0.22 +Nodes (8): 1. Technical Decisions & Tradeoffs, Decision 1: Motor de Navegação e Renderização com `foxcape` em Sessão Única, Decision 2: Orquestração Tripla de Extração de Conteúdo (NLP & Web Scraping), Decision 3: Resiliência e Isolamento de Falhas por Camada, Decision 4: Herança Inteligente de Idioma para NLP, Decision 5: Gerenciamento de Memória e Descarte do Raw HTML, Decision 6: Segregação de Streams e Feedback Visual em `stderr`, Research: Article Content Multi-Engine Extractor + +### Community 109 - "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)" +Cohesion: 0.25 +Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC), Project Structure, Source Code (repository root), Summary, Technical Context + +### Community 110 - "POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier" +Cohesion: 0.29 +Nodes (7): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier + +### Community 111 - "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier" +Cohesion: 0.33 +Nodes (5): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier + +### Community 112 - "CLI Contract: Article Content Multi-Engine Extractor" +Cohesion: 0.33 +Nodes (5): 1. Comando de Execução, 2. Argumentos e Flags, 3. Códigos de Saída (Exit Codes), 4. Comportamento de Streams (I/O), CLI Contract: Article Content Multi-Engine Extractor + +### Community 114 - "JSON Schema Contract: Article Content Multi-Engine Extractor" +Cohesion: 0.50 +Nodes (3): 1. Schema de Entrada (Input JSON), 2. Schema de Saída (Output JSON), JSON Schema Contract: Article Content Multi-Engine Extractor ## Knowledge Gaps -- **381 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+376 more) +- **465 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+460 more) These have ≤1 connection - possible missing edges or undocumented components. - **38 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `main()` connect `main` to `main`, `classifier.py`, `ECPSnapshot`, `InherenceClassifier`?** - _High betweenness centrality (0.029) - this node is a cross-community bridge._ -- **Why does `ECPSnapshot` connect `ECPSnapshot` to `classifier.py`, `main`, `ClassificationResult`, `InherenceClassifier`, `test_models.py`?** - _High betweenness centrality (0.020) - this node is a cross-community bridge._ -- **Why does `main()` connect `main` to `extract_google_news.py`, `test_extract_google_news.py`, `SearchQuery`, `build_parser`?** - _High betweenness centrality (0.020) - this node is a cross-community bridge._ +- **Why does `ECPSnapshot` connect `ECPSnapshot` to `main`, `models.py`, `classifier.py`, `InherenceClassifier`, `detect_language`?** + _High betweenness centrality (0.006) - this node is a cross-community bridge._ +- **Why does `InherenceClassifier` connect `InherenceClassifier` to `main`, `ECPSnapshot`, `models.py`, `classifier.py`, `detect_language`?** + _High betweenness centrality (0.003) - this node is a cross-community bridge._ +- **Why does `detect_language()` connect `detect_language` to `classifier.py`?** + _High betweenness centrality (0.003) - this node is a cross-community bridge._ - **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?** _`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._ - **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?** diff --git a/graphify-out/cache/ast/v0.9.47-s2/0573d9b13e45413beefac33d86eae94e17dbbf37554120a1fc5720bfb3d67d63.json b/graphify-out/cache/ast/v0.9.47-s2/0573d9b13e45413beefac33d86eae94e17dbbf37554120a1fc5720bfb3d67d63.json new file mode 100644 index 0000000..a81240e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/0573d9b13e45413beefac33d86eae94e17dbbf37554120a1fc5720bfb3d67d63.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_cli_py", "label": "test_cli.py", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "label": "test_cli_success_stdout()", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L8", "_callable": true}, {"id": "$graphify-root$_tests_test_cli_test_cli_output_file", "label": "test_cli_output_file()", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L39", "_callable": true}, {"id": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "label": "test_cli_missing_ecp_file()", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L73", "_callable": true}, {"id": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "label": "test_cli_empty_content_file()", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L85", "_callable": true}, {"id": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "label": "test_cli_missing_required_ecp_field()", "file_type": "code", "source_file": "tests/test_cli.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_cli_rationale_1", "label": "CLI execution tests covering flags, arguments, stdout, and error handling.", "file_type": "rationale", "source_file": "tests/test_cli.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_cli_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "classify", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "$graphify-root$_tests_test_cli_test_cli_output_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_py", "target": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cli_rationale_1", "target": "$graphify-root$_tests_test_cli_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cli.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L10", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L11", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L24", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_cli.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L32", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_success_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L33", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L41", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L42", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L55", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_cli.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "exists", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L66", "receiver": "output_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "loads", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L68", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_output_file", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L68", "receiver": "output_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L75", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_cli.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L80", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_ecp_file", "callee": "loads", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L81", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L87", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L88", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L101", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_cli.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L106", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_empty_content_file", "callee": "loads", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L107", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L113", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L114", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L119", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "main", "is_member_call": false, "source_file": "tests/test_cli.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L124", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_cli_test_cli_missing_required_ecp_field", "callee": "loads", "is_member_call": true, "source_file": "tests/test_cli.py", "source_location": "L125", "receiver": "json"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/084a9de66475aad2eb213ff906128d4094408891bd8ddbbd9f0e5674a1cb6192.json b/graphify-out/cache/ast/v0.9.47-s2/084a9de66475aad2eb213ff906128d4094408891bd8ddbbd9f0e5674a1cb6192.json new file mode 100644 index 0000000..094513a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/084a9de66475aad2eb213ff906128d4094408891bd8ddbbd9f0e5674a1cb6192.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_adapters_llm_py", "label": "llm.py", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "label": "LLMFallbackAdapter", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L15", "_callable": true, "_callable_class": true}, {"id": "basenlpadapter", "label": "BaseNLPAdapter", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/llm.py"}, {"id": "$graphify-root$_src_adapters_llm_llmfallbackadapter_init", "label": ".__init__()", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L18", "_callable": true}, {"id": "$graphify-root$_src_adapters_llm_llmfallbackadapter_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_src_adapters_llm_llmfallbackadapter_evaluate_similarity", "label": ".evaluate_similarity()", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L25", "_callable": true}, {"id": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "label": ".disambiguate()", "file_type": "code", "source_file": "src/adapters/llm.py", "source_location": "L28", "_callable": true}, {"id": "ecpsnapshot", "label": "ECPSnapshot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/llm.py"}, {"id": "classificationresult", "label": "ClassificationResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/llm.py"}, {"id": "$graphify-root$_src_adapters_llm_rationale_1", "label": "Optional LLM fallback adapter (Tier 3). Disabled by default. Provides fallback\u2026", "file_type": "rationale", "source_file": "src/adapters/llm.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_llm_rationale_16", "label": "Optional adapter for LLM fallback boundary disambiguation.", "file_type": "rationale", "source_file": "src/adapters/llm.py", "source_location": "L16"}], "edges": [{"source": "$graphify-root$_src_adapters_llm_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_py", "target": "src_adapters_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_py", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "target": "basenlpadapter", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter_evaluate_similarity", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "target": "ecpsnapshot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_llmfallbackadapter_disambiguate", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_rationale_1", "target": "$graphify-root$_src_adapters_llm_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_llm_rationale_16", "target": "$graphify-root$_src_adapters_llm_llmfallbackadapter", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/llm.py", "source_location": "L16", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_adapters_llm_llmfallbackadapter_init", "callee": "get", "is_member_call": true, "source_file": "src/adapters/llm.py", "source_location": "L20", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/0cefe7faadd07932717b8c3493914e5367ec6ac50673671aee1f4edc7bde7e37.json b/graphify-out/cache/ast/v0.9.47-s2/0cefe7faadd07932717b8c3493914e5367ec6ac50673671aee1f4edc7bde7e37.json new file mode 100644 index 0000000..5353a47 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/0cefe7faadd07932717b8c3493914e5367ec6ac50673671aee1f4edc7bde7e37.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_md", "label": "json-schema.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", "label": "JSON Schema Contract: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_1_schema_de_entrada_input_json", "label": "1. Schema de Entrada (Input JSON)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_2_schema_de_sa\u00edda_output_json", "label": "2. Schema de Sa\u00edda (Output JSON)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L27"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_md", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_1_schema_de_entrada_input_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_json_schema_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_json_schema_2_schema_de_sa\u00edda_output_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/json-schema.md", "source_location": "L27", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/10606cd2c6fc37c4edbffdddb59a4646fc0c9efba1791546e2dc6337c0cb9971.json b/graphify-out/cache/ast/v0.9.47-s2/10606cd2c6fc37c4edbffdddb59a4646fc0c9efba1791546e2dc6337c0cb9971.json new file mode 100644 index 0000000..6c537e4 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/10606cd2c6fc37c4edbffdddb59a4646fc0c9efba1791546e2dc6337c0cb9971.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_article_contents_py", "label": "extract_article_contents.py", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle", "label": "InputArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L37", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "label": "TrafilaturaData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L57", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L71", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "label": "NewspaperData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L87", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "label": "ReadabilityData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L117", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "label": "ExtractedArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L137", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "label": "ExtractionBatchReport", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L165", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L175", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "label": "TrafilaturaExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L191", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L195", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "label": "NewspaperExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L260", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L264", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "label": "ReadabilityExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L315", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L319", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "label": "extract_all_engines()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L347", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "label": "ArticleCrawler", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L402", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "label": ".__init__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L405", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "label": ".start()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L410", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "label": ".close()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L416", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "label": ".__enter__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L424", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "label": ".__exit__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L428", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "label": ".crawl()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L431", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_log_info", "label": "log_info()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L453", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_load_search_json", "label": "load_search_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L460", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "label": "save_extracted_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L488", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_process_batch", "label": "process_batch()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "label": "parse_arguments()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L608", "_callable": true}, {"id": "namespace", "label": "Namespace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L662", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_38", "label": "Metadados originais da not\u00edcia contida no JSON de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L38"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_58", "label": "Dados extra\u00eddos pelo motor Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L58"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_88", "label": "Dados extra\u00eddos e enriquecidos com NLP pelo motor Newspaper4k.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L88"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_118", "label": "Dados higienizados pelo algoritmo Readability.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L118"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_138", "label": "Resultado consolidado da extra\u00e7\u00e3o de um artigo.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L138"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_166", "label": "Relat\u00f3rio consolidado de sa\u00edda do processamento de um lote.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L166"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_192", "label": "Motor de extra\u00e7\u00e3o baseado na biblioteca Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L192"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_261", "label": "Motor de extra\u00e7\u00e3o baseado no Newspaper4k com NLP.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L261"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_316", "label": "Motor de extra\u00e7\u00e3o baseado no algoritmo Readability (readability-lxml).", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L316"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_350", "label": "Executa a extra\u00e7\u00e3o simult\u00e2nea pelos tr\u00eas motores de conte\u00fado com isolamento\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L350"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_403", "label": "Gerenciador de ciclo de vida e requisi\u00e7\u00f5es via Foxcape Headless.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L403"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_432", "label": "Navega at\u00e9 a URL, aguarda o carregamento do DOM e retorna (html, page_title,\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L432"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_454", "label": "Escreve mensagem informativa no stderr.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L454"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_461", "label": "Carrega o arquivo JSON gerado pelo extrator de not\u00edcias.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L461"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_489", "label": "Salva o relat\u00f3rio consolidado em formato JSON com UTF-8.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L489"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_503", "label": "Executa o pipeline completo de extra\u00e7\u00e3o em lote para o arquivo de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L503"}], "edges": [{"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "newspaper", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "readability", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "trafilatura", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L260", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L402", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L405", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L410", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L416", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L424", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L424", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L431", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L453", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L460", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L460", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L460", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L488", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L488", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L488", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L608", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "target": "namespace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L608", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L662", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L370", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L425", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L429", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L436", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L476", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L506", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L513", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L527", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L539", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L543", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L584", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L593", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L664", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L665", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L672", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_38", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_58", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_88", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_118", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_138", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_166", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_192", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_261", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_316", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L316", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_350", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_403", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_432", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L432", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_454", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L454", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_461", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L461", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_489", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L489", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_503", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L503", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L158", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L182", "receiver": "a"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract_metadata", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L198", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L208", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L218", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "loads", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L227", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L241", "receiver": "raw_text"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L267", "receiver": "language"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "Article", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L269", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "download", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L270", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "parse", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L271", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "nlp", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L275", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L283", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L311"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "Document", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L321", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L322", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "short_title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L323", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "summary", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L324", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L328", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L343"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L352", "receiver": "TrafilaturaExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L364"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L368", "receiver": "NewspaperExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L380"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L384", "receiver": "ReadabilityExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L391"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L412", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "Foxcape", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L413", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "start", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "callee": "close", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L419", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L456", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "flush", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L462", "receiver": "file_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "load", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L466", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L466"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L468", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L469", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L470", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L474"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L475", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L479", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L480", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L481", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L490", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "dump", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L492", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L492"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L492", "receiver": "report"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L525", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "crawl", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L533", "receiver": "crawler"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L562"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L579", "receiver": "extracted_list"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L581", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L582", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L582", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L609", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L613", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L617"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L620", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L624"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L628", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L632"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L636", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L641"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L645", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L649"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L653", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L659", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L668", "receiver": "input_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L669", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L685", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/1ad671e31d86c76aedaa27d5d4da839cdf2d602bd17e618310c80bd3747fab78.json b/graphify-out/cache/ast/v0.9.47-s2/1ad671e31d86c76aedaa27d5d4da839cdf2d602bd17e618310c80bd3747fab78.json new file mode 100644 index 0000000..c2a1833 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/1ad671e31d86c76aedaa27d5d4da839cdf2d602bd17e618310c80bd3747fab78.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_spec_md", "label": "spec.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "label": "Feature Specification: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "label": "Clarifications", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "label": "User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "label": "User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "label": "User Story 3 - Controle de Execu\u00e7\u00e3o via Linha de Comando e Feedback Visual (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "label": "Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "label": "Functional Requirements", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "label": "Key Entities", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "label": "Measurable Outcomes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "label": "Assumptions", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_spec_md", "target": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "target": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/232210770fc690edcc732d940bafe46fcec9bfed7f17e0aa5c60e6cf6635751f.json b/graphify-out/cache/ast/v0.9.47-s2/232210770fc690edcc732d940bafe46fcec9bfed7f17e0aa5c60e6cf6635751f.json new file mode 100644 index 0000000..6f5b35a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/232210770fc690edcc732d940bafe46fcec9bfed7f17e0aa5c60e6cf6635751f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_models_py", "label": "test_models.py", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "label": "test_ecp_snapshot_valid()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "label": "test_ecp_snapshot_defaults()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "label": "test_ecp_snapshot_missing_required()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_classification_result_serialization", "label": "test_classification_result_serialization()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L70", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_classification_error_serialization", "label": "test_classification_error_serialization()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L88", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "label": "test_parser_strip_markdown()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "label": "test_extract_evidence_snippets()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_models_rationale_1", "label": "Unit tests for ECP models, schema validation, and structured error handling.", "file_type": "rationale", "source_file": "tests/test_models.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_models_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "src_parser", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_classification_result_serialization", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_classification_error_serialization", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_rationale_1", "target": "$graphify-root$_tests_test_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L36", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L53", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "raises", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L66", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_models.py", "source_location": "L66"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L67", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_result_serialization", "callee": "ClassificationResult", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_result_serialization", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L80", "receiver": "res"}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_error_serialization", "callee": "ClassificationError", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_error_serialization", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L94", "receiver": "err"}, {"caller_nid": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "callee": "strip_markdown", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "callee": "extract_evidence_snippets", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L112", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/260513e4539e617b4123ac5b5352cb6ce7caf3a5dfba08badf6390bf60784ac9.json b/graphify-out/cache/ast/v0.9.47-s2/260513e4539e617b4123ac5b5352cb6ce7caf3a5dfba08badf6390bf60784ac9.json new file mode 100644 index 0000000..8358bb8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/260513e4539e617b4123ac5b5352cb6ce7caf3a5dfba08badf6390bf60784ac9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_models_py", "label": "models.py", "file_type": "code", "source_file": "src/models.py", "source_location": "L1"}, {"id": "$graphify-root$_src_models_decisioncategory", "label": "DecisionCategory", "file_type": "code", "source_file": "src/models.py", "source_location": "L11", "_callable": true, "_callable_class": true}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/models.py"}, {"id": "enum", "label": "Enum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/models.py"}, {"id": "$graphify-root$_src_models_errorcode", "label": "ErrorCode", "file_type": "code", "source_file": "src/models.py", "source_location": "L18", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_relatedentity", "label": "RelatedEntity", "file_type": "code", "source_file": "src/models.py", "source_location": "L27", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_relatedentity_from_dict", "label": ".from_dict()", "file_type": "code", "source_file": "src/models.py", "source_location": "L37", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/models.py"}, {"id": "$graphify-root$_src_models_ecpsnapshot", "label": "ECPSnapshot", "file_type": "code", "source_file": "src/models.py", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_ecpsnapshot_from_dict", "label": ".from_dict()", "file_type": "code", "source_file": "src/models.py", "source_location": "L69", "_callable": true}, {"id": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "label": ".from_json_str()", "file_type": "code", "source_file": "src/models.py", "source_location": "L105", "_callable": true}, {"id": "$graphify-root$_src_models_matchedgraphentity", "label": "MatchedGraphEntity", "file_type": "code", "source_file": "src/models.py", "source_location": "L114", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_classificationresult", "label": "ClassificationResult", "file_type": "code", "source_file": "src/models.py", "source_location": "L122", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_classificationresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "src/models.py", "source_location": "L134", "_callable": true}, {"id": "$graphify-root$_src_models_classificationresult_to_json_str", "label": ".to_json_str()", "file_type": "code", "source_file": "src/models.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_src_models_classificationerror", "label": "ClassificationError", "file_type": "code", "source_file": "src/models.py", "source_location": "L155", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_models_classificationerror_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "src/models.py", "source_location": "L160", "_callable": true}, {"id": "$graphify-root$_src_models_classificationerror_to_json_str", "label": ".to_json_str()", "file_type": "code", "source_file": "src/models.py", "source_location": "L169", "_callable": true}, {"id": "$graphify-root$_src_models_rationale_1", "label": "Data models and validation schemas for Multilingual NLP Entity Inherence\u2026", "file_type": "rationale", "source_file": "src/models.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_models_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "enum", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_decisioncategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_models_decisioncategory", "target": "str", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_models_decisioncategory", "target": "enum", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_errorcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_models_errorcode", "target": "str", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_models_errorcode", "target": "enum", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_relatedentity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_models_relatedentity", "target": "$graphify-root$_src_models_relatedentity_from_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_models_relatedentity_from_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_models_relatedentity_from_dict", "target": "$graphify-root$_src_models_relatedentity", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_ecpsnapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot", "target": "$graphify-root$_src_models_ecpsnapshot_from_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot_from_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot_from_dict", "target": "$graphify-root$_src_models_ecpsnapshot", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot", "target": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "target": "$graphify-root$_src_models_ecpsnapshot", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_matchedgraphentity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_classificationresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationresult", "target": "$graphify-root$_src_models_classificationresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationresult", "target": "$graphify-root$_src_models_classificationresult_to_json_str", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_src_models_py", "target": "$graphify-root$_src_models_classificationerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationerror", "target": "$graphify-root$_src_models_classificationerror_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationerror_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationerror", "target": "$graphify-root$_src_models_classificationerror_to_json_str", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "target": "$graphify-root$_src_models_ecpsnapshot_from_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationresult_to_json_str", "target": "$graphify-root$_src_models_classificationerror_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_src_models_classificationerror_to_json_str", "target": "$graphify-root$_src_models_classificationerror_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_src_models_rationale_1", "target": "$graphify-root$_src_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L38"}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "cls", "is_member_call": false, "source_file": "src/models.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L51", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L52", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_relatedentity_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L53", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L70"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L78"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L79", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L80"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L83", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L84"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L85", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L87", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/models.py", "source_location": "L88"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "from_dict", "is_member_call": true, "source_file": "src/models.py", "source_location": "L91", "receiver": "RelatedEntity"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "cls", "is_member_call": false, "source_file": "src/models.py", "source_location": "L93", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_dict", "callee": "get", "is_member_call": true, "source_file": "src/models.py", "source_location": "L100", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "callee": "loads", "is_member_call": true, "source_file": "src/models.py", "source_location": "L107", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_models_ecpsnapshot_from_json_str", "callee": "ValueError", "is_member_call": false, "source_file": "src/models.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_src_models_classificationresult_to_json_str", "callee": "dumps", "is_member_call": true, "source_file": "src/models.py", "source_location": "L151", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_models_classificationerror_to_json_str", "callee": "dumps", "is_member_call": true, "source_file": "src/models.py", "source_location": "L170", "receiver": "json"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/3122914461e8d6017e63900c66fa8935135b5efcc9fca8d64e762ee109602901.json b/graphify-out/cache/ast/v0.9.47-s2/3122914461e8d6017e63900c66fa8935135b5efcc9fca8d64e762ee109602901.json new file mode 100644 index 0000000..41af858 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/3122914461e8d6017e63900c66fa8935135b5efcc9fca8d64e762ee109602901.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_tasks_md", "label": "tasks.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "label": "Tasks: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_1_setup_dependencies", "label": "Phase 1: Setup & Dependencies", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_2_foundational_estruturas_e_modelos_base", "label": "Phase 2: Foundational (Estruturas e Modelos Base)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "label": "Phase 3: User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L31"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_1_tdd", "label": "Testes da User Story 1 (TDD)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L37"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_1", "label": "Implementa\u00e7\u00e3o da User Story 1", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L43"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "label": "Phase 4: User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L54"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_2_tdd", "label": "Testes da User Story 2 (TDD)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L60"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_2", "label": "Implementa\u00e7\u00e3o da User Story 2", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L64"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", "label": "Phase 5: User Story 3 - Controle de Execu\u00e7\u00e3o via CLI e Feedback Visual (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L72"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_3_tdd", "label": "Testes da User Story 3 (TDD)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L78"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_3", "label": "Implementa\u00e7\u00e3o da User Story 3", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L82"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_6_polish_valida\u00e7\u00e3o_final", "label": "Phase 6: Polish & Valida\u00e7\u00e3o Final", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L91"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_dependencies_execution_order", "label": "Dependencies & Execution Order", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L102"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_oportunidades_de_execu\u00e7\u00e3o_paralela", "label": "Oportunidades de Execu\u00e7\u00e3o Paralela", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L113"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_implementation_strategy", "label": "Implementation Strategy", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L120"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_mvp_first_user_story_1_only", "label": "MVP First (User Story 1 Only)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L122"}, {"id": "$graphify-root$_specs_003_article_content_extractor_tasks_entrega_incremental", "label": "Entrega Incremental", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L127"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_tasks_md", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_1_setup_dependencies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_2_foundational_estruturas_e_modelos_base", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_1_tdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_3_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_2_tdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_4_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_testes_da_user_story_3_tdd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_5_user_story_3_controle_de_execu\u00e7\u00e3o_via_cli_e_feedback_visual_priority_p3", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_implementa\u00e7\u00e3o_da_user_story_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_phase_6_polish_valida\u00e7\u00e3o_final", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_dependencies_execution_order", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_dependencies_execution_order", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_oportunidades_de_execu\u00e7\u00e3o_paralela", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_tasks_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_implementation_strategy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_implementation_strategy", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_mvp_first_user_story_1_only", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_tasks_implementation_strategy", "target": "$graphify-root$_specs_003_article_content_extractor_tasks_entrega_incremental", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/tasks.md", "source_location": "L127", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/32a9519d5c55012aedaa43a786aff1cec88e7391d186f5d0a54213ca1b204f48.json b/graphify-out/cache/ast/v0.9.47-s2/32a9519d5c55012aedaa43a786aff1cec88e7391d186f5d0a54213ca1b204f48.json new file mode 100644 index 0000000..8a2c08d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/32a9519d5c55012aedaa43a786aff1cec88e7391d186f5d0a54213ca1b204f48.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_adapters_py", "label": "test_adapters.py", "file_type": "code", "source_file": "tests/test_adapters.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "label": "test_embeddings_adapter_interface()", "file_type": "code", "source_file": "tests/test_adapters.py", "source_location": "L9", "_callable": true}, {"id": "$graphify-root$_tests_test_adapters_test_llm_adapter_interface", "label": "test_llm_adapter_interface()", "file_type": "code", "source_file": "tests/test_adapters.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_adapters_test_classifier_with_adapter_flags", "label": "test_classifier_with_adapter_flags()", "file_type": "code", "source_file": "tests/test_adapters.py", "source_location": "L20", "_callable": true}, {"id": "$graphify-root$_tests_test_adapters_rationale_1", "label": "Unit tests for optional adapter interfaces (Tier 2 / Tier 3).", "file_type": "rationale", "source_file": "tests/test_adapters.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_adapters_py", "target": "src_adapters_embeddings", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "src_adapters_llm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "src_classifier", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "$graphify-root$_tests_test_adapters_test_llm_adapter_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_py", "target": "$graphify-root$_tests_test_adapters_test_classifier_with_adapter_flags", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adapters_rationale_1", "target": "$graphify-root$_tests_test_adapters_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adapters.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "callee": "LocalEmbeddingsAdapter", "is_member_call": false, "source_file": "tests/test_adapters.py", "source_location": "L10", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "callee": "bool", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_adapters.py", "source_location": "L11"}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "callee": "is_available", "is_member_call": true, "source_file": "tests/test_adapters.py", "source_location": "L11", "receiver": "adapter"}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_embeddings_adapter_interface", "callee": "evaluate_similarity", "is_member_call": true, "source_file": "tests/test_adapters.py", "source_location": "L12", "receiver": "adapter"}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_llm_adapter_interface", "callee": "LLMFallbackAdapter", "is_member_call": false, "source_file": "tests/test_adapters.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_llm_adapter_interface", "callee": "bool", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_adapters.py", "source_location": "L17"}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_llm_adapter_interface", "callee": "is_available", "is_member_call": true, "source_file": "tests/test_adapters.py", "source_location": "L17", "receiver": "adapter"}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_classifier_with_adapter_flags", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adapters.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_classifier_with_adapter_flags", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adapters.py", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adapters_test_classifier_with_adapter_flags", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adapters.py", "source_location": "L32", "receiver": "classifier"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/332c407a9b1c3eafcb874d24f5396f005cde65d4d8e9e643fda95f47f093c544.json b/graphify-out/cache/ast/v0.9.47-s2/332c407a9b1c3eafcb874d24f5396f005cde65d4d8e9e643fda95f47f093c544.json new file mode 100644 index 0000000..34efa2c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/332c407a9b1c3eafcb874d24f5396f005cde65d4d8e9e643fda95f47f093c544.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_md", "label": "quickstart.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", "label": "Quickstart & Validation Guide: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_1_pr\u00e9_requisitos", "label": "1. Pr\u00e9-requisitos", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "label": "2. Cen\u00e1rios de Valida\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L17"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_com_amostragem_r\u00e1pida_limit_2", "label": "Cen\u00e1rio 1: Extra\u00e7\u00e3o com Amostragem R\u00e1pida (Limit 2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_2_caminho_customizado_de_sa\u00edda", "label": "Cen\u00e1rio 2: Caminho Customizado de Sa\u00edda", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L33"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_3_modo_silencioso_silent", "label": "Cen\u00e1rio 3: Modo Silencioso (`--silent`)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L45"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_4_resili\u00eancia_contra_urls_inv\u00e1lidas", "label": "Cen\u00e1rio 4: Resili\u00eancia contra URLs Inv\u00e1lidas", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L58"}, {"id": "$graphify-root$_specs_003_article_content_extractor_quickstart_3_valida\u00e7\u00e3o_automatizada_de_testes", "label": "3. Valida\u00e7\u00e3o Automatizada de Testes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L71"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_md", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_1_pr\u00e9_requisitos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_1_extra\u00e7\u00e3o_com_amostragem_r\u00e1pida_limit_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_2_caminho_customizado_de_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_3_modo_silencioso_silent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_2_cen\u00e1rios_de_valida\u00e7\u00e3o", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_cen\u00e1rio_4_resili\u00eancia_contra_urls_inv\u00e1lidas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_quickstart_quickstart_validation_guide_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_quickstart_3_valida\u00e7\u00e3o_automatizada_de_testes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/quickstart.md", "source_location": "L71", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/396d8fc8340464edbfdaff625100a376a719d1185d55f75f0fe5edd1847c7aa3.json b/graphify-out/cache/ast/v0.9.47-s2/396d8fc8340464edbfdaff625100a376a719d1185d55f75f0fe5edd1847c7aa3.json new file mode 100644 index 0000000..7ada6aa --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/396d8fc8340464edbfdaff625100a376a719d1185d55f75f0fe5edd1847c7aa3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_article_contents_py", "label": "test_extract_article_contents.py", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "label": "sample_input_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "label": "test_input_article_creation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L96", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "label": "test_load_search_json_valid()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "label": "test_load_search_json_invalid_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "label": "test_save_extracted_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "label": "test_trafilatura_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L190", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "label": "test_newspaper_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L199", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "label": "test_readability_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L211", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "label": "test_extract_all_engines()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L221", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "label": "test_extractor_error_isolation_on_faulty_engine()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "label": "test_crawler_error_isolation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "label": "test_process_batch_with_limit()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "label": "test_cli_main_success()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "label": "test_cli_main_missing_input_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "scripts_extract_article_contents", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L62", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L87", "receiver": "input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L87", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L107", "receiver": "article"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L122", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "FileNotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L122"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractionBatchReport", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractedArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L134", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "TrafilaturaData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "NewspaperData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ReadabilityData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "save_extracted_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L179", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L180", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L180", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L192", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L192"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L193"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L201", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L202"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L204"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L207"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L212", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L213", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L213"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L223"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L236", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L238", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L240", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L241"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L256", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "mock_crawl", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L257", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L257"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L257", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L257"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L258", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L280", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L281"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L281"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L283", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L283"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L283", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L283"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L284", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L293", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L299", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L300"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L300"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L302", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L302"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L302", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L302"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L303", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L308", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L313", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/39d8678210517983b9fe9bfa26a1990c1f4f63195651da2a180d3bb73db51a1e.json b/graphify-out/cache/ast/v0.9.47-s2/39d8678210517983b9fe9bfa26a1990c1f4f63195651da2a180d3bb73db51a1e.json new file mode 100644 index 0000000..ba61204 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/39d8678210517983b9fe9bfa26a1990c1f4f63195651da2a180d3bb73db51a1e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_adapters_base_py", "label": "base.py", "file_type": "code", "source_file": "src/adapters/base.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_base_basenlpadapter", "label": "BaseNLPAdapter", "file_type": "code", "source_file": "src/adapters/base.py", "source_location": "L10", "_callable": true, "_callable_class": true}, {"id": "abc", "label": "ABC", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/base.py"}, {"id": "$graphify-root$_src_adapters_base_basenlpadapter_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/adapters/base.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_src_adapters_base_basenlpadapter_evaluate_similarity", "label": ".evaluate_similarity()", "file_type": "code", "source_file": "src/adapters/base.py", "source_location": "L18", "_callable": true}, {"id": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "label": ".disambiguate()", "file_type": "code", "source_file": "src/adapters/base.py", "source_location": "L22", "_callable": true}, {"id": "ecpsnapshot", "label": "ECPSnapshot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/base.py"}, {"id": "classificationresult", "label": "ClassificationResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/base.py"}, {"id": "$graphify-root$_src_adapters_base_rationale_1", "label": "Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers.", "file_type": "rationale", "source_file": "src/adapters/base.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_base_rationale_11", "label": "Abstract interface for pluggable NLP classification adapters.", "file_type": "rationale", "source_file": "src/adapters/base.py", "source_location": "L11"}, {"id": "$graphify-root$_src_adapters_base_rationale_15", "label": "Return True if the underlying provider or model is installed and configured.", "file_type": "rationale", "source_file": "src/adapters/base.py", "source_location": "L15"}, {"id": "$graphify-root$_src_adapters_base_rationale_19", "label": "Compute semantic similarity score between text and a set of candidate terms.", "file_type": "rationale", "source_file": "src/adapters/base.py", "source_location": "L19"}, {"id": "$graphify-root$_src_adapters_base_rationale_28", "label": "Optionally refine an ambiguous classification result.", "file_type": "rationale", "source_file": "src/adapters/base.py", "source_location": "L28"}], "edges": [{"source": "$graphify-root$_src_adapters_base_py", "target": "abc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_py", "target": "$graphify-root$_src_adapters_base_basenlpadapter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter", "target": "abc", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter", "target": "$graphify-root$_src_adapters_base_basenlpadapter_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter", "target": "$graphify-root$_src_adapters_base_basenlpadapter_evaluate_similarity", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter", "target": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "target": "ecpsnapshot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_rationale_1", "target": "$graphify-root$_src_adapters_base_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_rationale_11", "target": "$graphify-root$_src_adapters_base_basenlpadapter", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_rationale_15", "target": "$graphify-root$_src_adapters_base_basenlpadapter_is_available", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_rationale_19", "target": "$graphify-root$_src_adapters_base_basenlpadapter_evaluate_similarity", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_base_rationale_28", "target": "$graphify-root$_src_adapters_base_basenlpadapter_disambiguate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/base.py", "source_location": "L28", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/3acc7ff372e6b0f1f42dad29d280b835ac51784b1dca8054472287a7355c9386.json b/graphify-out/cache/ast/v0.9.47-s2/3acc7ff372e6b0f1f42dad29d280b835ac51784b1dca8054472287a7355c9386.json new file mode 100644 index 0000000..4fb89e9 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/3acc7ff372e6b0f1f42dad29d280b835ac51784b1dca8054472287a7355c9386.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_adversarial_py", "label": "test_adversarial.py", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "test_adversarial_sao_paulo_city_vs_fc()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "test_adversarial_apple_fruit_recipe()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "test_adversarial_related_entity_without_scope_context()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "test_adversarial_subprocess_cli_success_stdout()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "test_adversarial_subprocess_cli_empty_content()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "test_adversarial_subprocess_cli_missing_required_field()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L185", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "test_adversarial_subprocess_cli_corrupted_json()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_15", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L15"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_45", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L45"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_69", "label": "High-weight related entity mentioned in passing without required domain anchors.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L69"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_105", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L105"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_149", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L149"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_186", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L186"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_221", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L221"}], "edges": [{"source": "$graphify-root$_tests_test_adversarial_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_1", "target": "$graphify-root$_tests_test_adversarial_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_15", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_45", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_69", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_105", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_149", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_186", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_221", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L221", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L38", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L63", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "RelatedEntity", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L97", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L107", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L108", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L121", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L130", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "strip", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L141", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L155", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L156", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L169", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L171", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L181", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L192", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L193", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L205", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L207", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L216", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L227", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L230", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L232", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L241", "receiver": "json"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/3ae38a2a907f1aeb6987c647a6290533acde67ef91f590445bdec0e1da5f52be.json b/graphify-out/cache/ast/v0.9.47-s2/3ae38a2a907f1aeb6987c647a6290533acde67ef91f590445bdec0e1da5f52be.json new file mode 100644 index 0000000..e81ea85 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/3ae38a2a907f1aeb6987c647a6290533acde67ef91f590445bdec0e1da5f52be.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_plan_md", "label": "plan.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "label": "Implementation Plan: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "label": "Summary", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "label": "Technical Context", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "label": "Constitution Check", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "label": "Project Structure", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "label": "Source Code Layout", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "label": "Implementation Phases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "label": "Phase 0: Outline & Research *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "label": "Phase 1: Design & Contracts *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_completed", "label": "Phase 2: Tasks & Execution *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_plan_md", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/3c770288636c4523897b41c6dad5f2771af2007654d6b5f6b87d74bc9c33d11d.json b/graphify-out/cache/ast/v0.9.47-s2/3c770288636c4523897b41c6dad5f2771af2007654d6b5f6b87d74bc9c33d11d.json new file mode 100644 index 0000000..159b352 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/3c770288636c4523897b41c6dad5f2771af2007654d6b5f6b87d74bc9c33d11d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_md", "label": "requirements.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "label": "Specification Quality Checklist: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_content_quality", "label": "Content Quality", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_feature_readiness", "label": "Feature Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L32"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_md", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_md", "target": "$graphify-root$_specs_003_article_content_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/003-article-content-extractor/spec.md"}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_content_quality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_feature_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_specification_quality_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_requirements_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/requirements.md", "source_location": "L32", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/42e10af009afb4936c6b585a4392ac94c84ff695a2ab33ff2655bf84b053c553.json b/graphify-out/cache/ast/v0.9.47-s2/42e10af009afb4936c6b585a4392ac94c84ff695a2ab33ff2655bf84b053c553.json new file mode 100644 index 0000000..06002b0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/42e10af009afb4936c6b585a4392ac94c84ff695a2ab33ff2655bf84b053c553.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_readme_md", "label": "README.md", "file_type": "document", "node_kind": "page", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_textnlpclassifierapp", "label": "\ud83e\udde0 TextNLPClassifierApp", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_tabela_de_conte\u00fados", "label": "\ud83d\udcd1 Tabela de Conte\u00fados", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L13"}, {"id": "$graphify-root$_readme_vis\u00e3o_geral", "label": "\ud83c\udf1f Vis\u00e3o Geral", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L38"}, {"id": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L48"}, {"id": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L50"}, {"id": "$graphify-root$_readme_2_instalar_depend\u00eancias", "label": "2. Instalar Depend\u00eancias", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L63"}, {"id": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L69"}, {"id": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L79"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L81"}, {"id": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L87"}, {"id": "$graphify-root$_readme_categorias_de_decis\u00e3o", "label": "Categorias de Decis\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L108"}, {"id": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "label": "Formato do ECP Snapshot e Markdown", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L117"}, {"id": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L119"}, {"id": "$graphify-root$_readme_exemplos_de_uso_cli", "label": "Exemplos de Uso CLI", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L141"}, {"id": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L156"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_158", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L158"}, {"id": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "label": "Diferenciais T\u00e9cnicos", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L162"}, {"id": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "label": "Argumentos e Flags de Linha de Comando", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L170"}, {"id": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "label": "Exemplos Pr\u00e1ticos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L183"}, {"id": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L185"}, {"id": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L199"}, {"id": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L204"}, {"id": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "label": "4. Filtragem com `jq` em Modo Silencioso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L209"}, {"id": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "label": "3. \ud83d\udcf0 Extrator e Parser Multimotor de Artigos", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L216"}, {"id": "$graphify-root$_readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", "label": "Vis\u00e3o Geral e Tr\u00edplice Extra\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L218"}, {"id": "$graphify-root$_readme_argumentos_e_flags_cli", "label": "Argumentos e Flags CLI", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L228"}, {"id": "$graphify-root$_readme_exemplos_de_uso", "label": "Exemplos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L239"}, {"id": "$graphify-root$_readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", "label": "1. Extra\u00e7\u00e3o Completa Autom\u00e1tica", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L241"}, {"id": "$graphify-root$_readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", "label": "2. Amostragem R\u00e1pida (Limit 2 Not\u00edcias)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L247"}, {"id": "$graphify-root$_readme_3_destino_customizado_e_timeout_ajustado", "label": "3. Destino Customizado e Timeout Ajustado", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L252"}, {"id": "$graphify-root$_readme_estrutura_do_projeto", "label": "\ud83d\udcc1 Estrutura do Projeto", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L259"}, {"id": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L288"}, {"id": "$graphify-root$_readme_licen\u00e7a", "label": "\ud83d\udcc4 Licen\u00e7a", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L309"}], "edges": [{"source": "$graphify-root$_readme_md", "target": "$graphify-root$_readme_textnlpclassifierapp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_tabela_de_conte\u00fados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_vis\u00e3o_geral", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_2_instalar_depend\u00eancias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_categorias_de_decis\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "target": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_exemplos_de_uso_cli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_158", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_argumentos_e_flags_cli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_exemplos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L247", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_3_destino_customizado_e_timeout_ajustado", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L252", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_estrutura_do_projeto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L259", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_licen\u00e7a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L309", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/4333ac8911d1cd27964b0bacfa394ee8fe9e068bb2f25f3e0ff5e299564a7b4d.json b/graphify-out/cache/ast/v0.9.47-s2/4333ac8911d1cd27964b0bacfa394ee8fe9e068bb2f25f3e0ff5e299564a7b4d.json new file mode 100644 index 0000000..426902a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/4333ac8911d1cd27964b0bacfa394ee8fe9e068bb2f25f3e0ff5e299564a7b4d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_article_contents_py", "label": "test_extract_article_contents.py", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "label": "sample_input_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L61", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "label": "test_input_article_creation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "label": "test_load_search_json_valid()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "label": "test_load_search_json_invalid_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L118", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "label": "test_save_extracted_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L124", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "label": "test_trafilatura_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L186", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "label": "test_newspaper_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L195", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "label": "test_readability_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L205", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "label": "test_extract_all_engines()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L215", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "label": "test_extractor_error_isolation_on_faulty_engine()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L229", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "label": "test_crawler_error_isolation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L242", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "label": "test_process_batch_with_limit()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L271", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "label": "test_cli_main_success()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "label": "test_cli_main_missing_input_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L305", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "label": "test_e2e_live_article_extraction()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L316", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "label": "test_e2e_cli_live_execution()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L360", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_rationale_317", "label": "Valida E2E a extra\u00e7\u00e3o real ao vivo com Foxcape e os 3 motores em lote.", "file_type": "rationale", "source_file": "tests/test_extract_article_contents.py", "source_location": "L317"}, {"id": "$graphify-root$_tests_test_extract_article_contents_rationale_361", "label": "Valida E2E a execu\u00e7\u00e3o do CLI real de ponta a ponta.", "file_type": "rationale", "source_file": "tests/test_extract_article_contents.py", "source_location": "L361"}], "edges": [{"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "scripts_extract_article_contents", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L60", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L316", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L316", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L362", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_rationale_317", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_rationale_361", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L361", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L85", "receiver": "input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L85", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L105", "receiver": "article"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "FileNotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractionBatchReport", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractedArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L132", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "TrafilaturaData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L139", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "NewspaperData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L151", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ReadabilityData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "save_extracted_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L174", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L175", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L176", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L176", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L187", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L188", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L188"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L189"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L196", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L197", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L197"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L198"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L201"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L206", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L207", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L207"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L208"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L216", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L217"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L230", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L232", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L234", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L235"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L250", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L250"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "mock_crawl", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L250"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L251", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L251"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L251", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L251"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L252", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L275", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L275"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L275"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L276", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L276"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L279", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L288", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L295", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L295"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L295"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L297", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L297"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L302", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L307", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L319", "receiver": "live_input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "skip", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L320", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L325", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L339", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L347"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L354", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L355", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L355", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L363", "receiver": "live_input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "skip", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L364", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L370", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L371", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L371", "receiver": "out_file"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/44c5ec336c210bdd9671a5e852ee750e91f426b87c954b2c52499513cb85168d.json b/graphify-out/cache/ast/v0.9.47-s2/44c5ec336c210bdd9671a5e852ee750e91f426b87c954b2c52499513cb85168d.json new file mode 100644 index 0000000..174c513 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/44c5ec336c210bdd9671a5e852ee750e91f426b87c954b2c52499513cb85168d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_md", "label": "cli-contract.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "label": "CLI Contract: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_1_comando_de_execu\u00e7\u00e3o", "label": "1. Comando de Execu\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_2_argumentos_e_flags", "label": "2. Argumentos e Flags", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L11"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_3_c\u00f3digos_de_sa\u00edda_exit_codes", "label": "3. C\u00f3digos de Sa\u00edda (Exit Codes)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_4_comportamento_de_streams_i_o", "label": "4. Comportamento de Streams (I/O)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L35"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_md", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_1_comando_de_execu\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_2_argumentos_e_flags", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_3_c\u00f3digos_de_sa\u00edda_exit_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_cli_contract_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_cli_contract_4_comportamento_de_streams_i_o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/contracts/cli-contract.md", "source_location": "L35", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/485f0e63023aa6dc8c4c64b22dd7394c032b7f468fa41632967789c4e269587b.json b/graphify-out/cache/ast/v0.9.47-s2/485f0e63023aa6dc8c4c64b22dd7394c032b7f468fa41632967789c4e269587b.json new file mode 100644 index 0000000..d0738ef --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/485f0e63023aa6dc8c4c64b22dd7394c032b7f468fa41632967789c4e269587b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_research_md", "label": "research.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", "label": "Research: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "label": "1. Technical Decisions & Tradeoffs", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_1_motor_de_navega\u00e7\u00e3o_e_renderiza\u00e7\u00e3o_com_foxcape_em_sess\u00e3o_\u00fanica", "label": "Decision 1: Motor de Navega\u00e7\u00e3o e Renderiza\u00e7\u00e3o com `foxcape` em Sess\u00e3o \u00danica", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_2_orquestra\u00e7\u00e3o_tripla_de_extra\u00e7\u00e3o_de_conte\u00fado_nlp_web_scraping", "label": "Decision 2: Orquestra\u00e7\u00e3o Tripla de Extra\u00e7\u00e3o de Conte\u00fado (NLP & Web Scraping)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L17"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_3_resili\u00eancia_e_isolamento_de_falhas_por_camada", "label": "Decision 3: Resili\u00eancia e Isolamento de Falhas por Camada", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L28"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_4_heran\u00e7a_inteligente_de_idioma_para_nlp", "label": "Decision 4: Heran\u00e7a Inteligente de Idioma para NLP", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_5_gerenciamento_de_mem\u00f3ria_e_descarte_do_raw_html", "label": "Decision 5: Gerenciamento de Mem\u00f3ria e Descarte do Raw HTML", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L42"}, {"id": "$graphify-root$_specs_003_article_content_extractor_research_decision_6_segrega\u00e7\u00e3o_de_streams_e_feedback_visual_em_stderr", "label": "Decision 6: Segrega\u00e7\u00e3o de Streams e Feedback Visual em `stderr`", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L48"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_research_md", "target": "$graphify-root$_specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_research_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_1_motor_de_navega\u00e7\u00e3o_e_renderiza\u00e7\u00e3o_com_foxcape_em_sess\u00e3o_\u00fanica", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_2_orquestra\u00e7\u00e3o_tripla_de_extra\u00e7\u00e3o_de_conte\u00fado_nlp_web_scraping", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_3_resili\u00eancia_e_isolamento_de_falhas_por_camada", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_4_heran\u00e7a_inteligente_de_idioma_para_nlp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_5_gerenciamento_de_mem\u00f3ria_e_descarte_do_raw_html", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_research_1_technical_decisions_tradeoffs", "target": "$graphify-root$_specs_003_article_content_extractor_research_decision_6_segrega\u00e7\u00e3o_de_streams_e_feedback_visual_em_stderr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/research.md", "source_location": "L48", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/49c1f46b23289bcbc8f361b181e8f0f6180ed04378644d6794fdd0747925b39d.json b/graphify-out/cache/ast/v0.9.47-s2/49c1f46b23289bcbc8f361b181e8f0f6180ed04378644d6794fdd0747925b39d.json new file mode 100644 index 0000000..c2a1833 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/49c1f46b23289bcbc8f361b181e8f0f6180ed04378644d6794fdd0747925b39d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_spec_md", "label": "spec.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "label": "Feature Specification: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "label": "Clarifications", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "label": "Session 2026-08-20", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "label": "User Scenarios & Testing *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "label": "User Story 1 - Extra\u00e7\u00e3o Completa e Consolidada de Artigos em Lote (Priority: P1) \ud83c\udf1f MVP", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "label": "User Story 2 - Resili\u00eancia e Isolamento de Falhas por Artigo e Motor (Priority: P2)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "label": "User Story 3 - Controle de Execu\u00e7\u00e3o via Linha de Comando e Feedback Visual (Priority: P3)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "label": "Edge Cases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "label": "Requirements *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "label": "Functional Requirements", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "label": "Key Entities", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "label": "Success Criteria *(mandatory)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "label": "Measurable Outcomes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99"}, {"id": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "label": "Assumptions", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_spec_md", "target": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_clarifications", "target": "$graphify-root$_specs_003_article_content_extractor_spec_session_2026_08_20", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_1_extra\u00e7\u00e3o_completa_e_consolidada_de_artigos_em_lote_priority_p1_mvp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_2_resili\u00eancia_e_isolamento_de_falhas_por_artigo_e_motor_priority_p2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_user_story_3_controle_de_execu\u00e7\u00e3o_via_linha_de_comando_e_feedback_visual_priority_p3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_user_scenarios_testing_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_edge_cases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_functional_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_requirements_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_key_entities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_success_criteria_mandatory", "target": "$graphify-root$_specs_003_article_content_extractor_spec_measurable_outcomes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_spec_feature_specification_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_spec_assumptions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/spec.md", "source_location": "L109", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/4d249dbb980bff1f0034b80785cf0e68bfce185bd99bbbf2456480bdc7ac7606.json b/graphify-out/cache/ast/v0.9.47-s2/4d249dbb980bff1f0034b80785cf0e68bfce185bd99bbbf2456480bdc7ac7606.json new file mode 100644 index 0000000..cd75988 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/4d249dbb980bff1f0034b80785cf0e68bfce185bd99bbbf2456480bdc7ac7606.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_article_contents_py", "label": "extract_article_contents.py", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle", "label": "InputArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L37", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "label": "TrafilaturaData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L57", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "label": "NewspaperData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L105", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "label": "ReadabilityData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L155", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L165", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "label": "ExtractedArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L177", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L190", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "label": "ExtractionBatchReport", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L205", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L215", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "label": "TrafilaturaExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L231", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "label": "NewspaperExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L310", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "label": "ReadabilityExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L371", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L375", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "label": "extract_all_engines()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "label": "ArticleCrawler", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L458", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "label": ".__init__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L461", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "label": ".start()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L466", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "label": ".close()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L472", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "label": ".__enter__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L480", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "label": ".__exit__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L484", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "label": ".crawl()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L487", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_log_info", "label": "log_info()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L509", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_load_search_json", "label": "load_search_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L516", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "label": "save_extracted_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L544", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_process_batch", "label": "process_batch()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L551", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "label": "parse_arguments()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L664", "_callable": true}, {"id": "namespace", "label": "Namespace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L718", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_38", "label": "Metadados originais da not\u00edcia contida no JSON de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L38"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_58", "label": "Dados completos extra\u00eddos pelo motor Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L58"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_106", "label": "Dados completos extra\u00eddos e enriquecidos com NLP pelo motor Newspaper4k.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L106"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_156", "label": "Dados completos higienizados pelo algoritmo Readability.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L156"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_178", "label": "Resultado consolidado da extra\u00e7\u00e3o de um artigo.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L178"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_206", "label": "Relat\u00f3rio consolidado de sa\u00edda do processamento de um lote.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L206"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_232", "label": "Motor de extra\u00e7\u00e3o baseado na biblioteca Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L232"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_311", "label": "Motor de extra\u00e7\u00e3o baseado no Newspaper4k com NLP.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L311"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_372", "label": "Motor de extra\u00e7\u00e3o baseado no algoritmo Readability (readability-lxml).", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L372"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_406", "label": "Executa a extra\u00e7\u00e3o simult\u00e2nea pelos tr\u00eas motores de conte\u00fado com isolamento\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L406"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_459", "label": "Gerenciador de ciclo de vida e requisi\u00e7\u00f5es via Foxcape Headless.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L459"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_488", "label": "Navega at\u00e9 a URL, aguarda o carregamento do DOM e retorna (html, page_title,\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L488"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_510", "label": "Escreve mensagem informativa no stderr.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L510"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_517", "label": "Carrega o arquivo JSON gerado pelo extrator de not\u00edcias.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L517"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_545", "label": "Salva o relat\u00f3rio consolidado em formato JSON com UTF-8.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L545"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_559", "label": "Executa o pipeline completo de extra\u00e7\u00e3o em lote para o arquivo de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L559"}], "edges": [{"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "newspaper", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "readability", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "trafilatura", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L371", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L458", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L461", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L466", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L484", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L484", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L484", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L484", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L487", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L509", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L516", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L516", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L516", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L544", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L544", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L544", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L664", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "target": "namespace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L664", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L718", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L276", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L345", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L410", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L426", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L442", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L481", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L485", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L492", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L532", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L562", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L569", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L583", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L595", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L599", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L640", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L649", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L720", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L721", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L728", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_38", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_58", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_106", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_156", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_178", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_206", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_232", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_311", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_372", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_406", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L406", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_459", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L459", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_488", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L488", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_510", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L510", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_517", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L517", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_545", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L545", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_559", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L559", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L192", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L199", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L222", "receiver": "a"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "bare_extraction", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L238", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L250", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L262", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "loads", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L271", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L292", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L298", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L300", "receiver": "raw_json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L301", "receiver": "raw_text"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L302", "receiver": "markdown_text"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L307"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L316", "receiver": "language"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "Article", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L318", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "download", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L319", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "parse", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L320", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "nlp", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L324", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "keyword_scores", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L327"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "tags", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L341"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "movies", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L342"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_img", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L353"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "canonical_link", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L357"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "article_html", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L358"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_description", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L359"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_favicon", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L361"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_site_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L362"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_lang", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L363"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L368"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "Document", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L377", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L378", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "short_title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L379", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "summary", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L380", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "author", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L383", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L388", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L389", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L400"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L408", "receiver": "TrafilaturaExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L420"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L424", "receiver": "NewspaperExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L436"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L440", "receiver": "ReadabilityExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L447"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L468", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "Foxcape", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "start", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "callee": "close", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L495", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L512", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "flush", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L513", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L518", "receiver": "file_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L519", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "load", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L522", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L522"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L524", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L525", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L526", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L530"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L531", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L535", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L536", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L537", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L546", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "dump", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L548", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L548"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L548", "receiver": "report"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L581", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "crawl", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L589", "receiver": "crawler"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L618"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L635", "receiver": "extracted_list"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L637", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L638", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L638", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L665", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L669", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L673"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L676", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L680"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L684", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L688"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L692", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L697"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L701", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L705"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L709", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L715", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L724", "receiver": "input_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L725", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L738", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L741", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/5304424b746b871720985cfdd031b0f8895c664bdd9d273b9c1723f445a2276f.json b/graphify-out/cache/ast/v0.9.47-s2/5304424b746b871720985cfdd031b0f8895c664bdd9d273b9c1723f445a2276f.json new file mode 100644 index 0000000..6cd2c21 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/5304424b746b871720985cfdd031b0f8895c664bdd9d273b9c1723f445a2276f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "test_resolve_article_url_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "label": "test_resolve_article_url_success()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L161", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L186", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L213", "_callable": true}, {"id": "capturefixture", "label": "CaptureFixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L234", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L253", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L262", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "test_e2e_resolve_real_google_news_url()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L281", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "test_e2e_extract_google_news_live_pipeline()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L302", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "test_e2e_cli_live_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L318", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_33", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_38", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L38"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_61", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L61"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_79", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L79"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_87", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_112", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L112"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L139"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_149", "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L149"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_162", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L162"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_187", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L187"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_214", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L214"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_235", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L235"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_254", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L254"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_263", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L263"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_282", "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L282"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_303", "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L303"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_319", "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L319"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L281", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_33", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_38", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_61", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_79", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_87", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_112", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_139", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_149", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_162", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_187", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_214", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_235", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_254", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L254", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_263", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_282", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L282", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_303", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_319", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L319", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L96", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L100", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L100"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L104", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L104"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L107", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L107"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L145", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L153", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L164", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L169", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "split", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L178", "receiver": "u"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "resolve_articles_urls", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L180", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L202"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L210", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L216", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L220", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L225", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L226", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L239", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L243", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L248", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L249", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L249", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L255", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L258", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L264", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L266", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L268", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L271", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L298", "receiver": "resolved_url"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L305", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L307"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L313", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L321", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L335", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L337", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L337", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L344", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/651180962cf2a9253cb0a22429947eb3bf552c26be7defce98ef7583cbcd8fbf.json b/graphify-out/cache/ast/v0.9.47-s2/651180962cf2a9253cb0a22429947eb3bf552c26be7defce98ef7583cbcd8fbf.json new file mode 100644 index 0000000..4eb0bd4 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/651180962cf2a9253cb0a22429947eb3bf552c26be7defce98ef7583cbcd8fbf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_data_model_md", "label": "data-model.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", "label": "Data Model: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "label": "1. Entities & Value Objects", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L3"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_1_inputarticle_value_object", "label": "1.1 InputArticle (Value Object)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L5"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_2_trafilaturadata_value_object", "label": "1.2 TrafilaturaData (Value Object)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L18"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_3_newspaperdata_value_object", "label": "1.3 NewspaperData (Value Object)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L36"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_4_readabilitydata_value_object", "label": "1.4 ReadabilityData (Value Object)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L54"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_5_extractedarticle_entity", "label": "1.5 ExtractedArticle (Entity)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L67"}, {"id": "$graphify-root$_specs_003_article_content_extractor_data_model_1_6_extractionbatchreport_aggregate_root", "label": "1.6 ExtractionBatchReport (Aggregate Root)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L84"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_data_model_md", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_data_model_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_1_inputarticle_value_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_2_trafilaturadata_value_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_3_newspaperdata_value_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_4_readabilitydata_value_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_5_extractedarticle_entity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_data_model_1_entities_value_objects", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_1_6_extractionbatchreport_aggregate_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/data-model.md", "source_location": "L84", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/75d8e6444528450b5d11eee5b51965c98525070bb65eb0edabc996701a4c5075.json b/graphify-out/cache/ast/v0.9.47-s2/75d8e6444528450b5d11eee5b51965c98525070bb65eb0edabc996701a4c5075.json new file mode 100644 index 0000000..b8cddf8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/75d8e6444528450b5d11eee5b51965c98525070bb65eb0edabc996701a4c5075.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_language_py", "label": "language.py", "file_type": "code", "source_file": "src/language.py", "source_location": "L1"}, {"id": "$graphify-root$_src_language_normalize_text", "label": "normalize_text()", "file_type": "code", "source_file": "src/language.py", "source_location": "L462", "_callable": true}, {"id": "$graphify-root$_src_language_extract_words", "label": "extract_words()", "file_type": "code", "source_file": "src/language.py", "source_location": "L472", "_callable": true}, {"id": "$graphify-root$_src_language_detect_language", "label": "detect_language()", "file_type": "code", "source_file": "src/language.py", "source_location": "L477", "_callable": true}, {"id": "$graphify-root$_src_language_rationale_1", "label": "Lightweight multilingual language detection and text normalization.", "file_type": "rationale", "source_file": "src/language.py", "source_location": "L1"}, {"id": "$graphify-root$_src_language_rationale_463", "label": "Normalize text by converting to lowercase and stripping combining diacritical\u2026", "file_type": "rationale", "source_file": "src/language.py", "source_location": "L463"}, {"id": "$graphify-root$_src_language_rationale_473", "label": "Tokenize text into lowercase alphanumeric words.", "file_type": "rationale", "source_file": "src/language.py", "source_location": "L473"}, {"id": "$graphify-root$_src_language_rationale_478", "label": "Detect the ISO-639-1 language code of text among supported languages (pt, en,\u2026", "file_type": "rationale", "source_file": "src/language.py", "source_location": "L478"}], "edges": [{"source": "$graphify-root$_src_language_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_language_py", "target": "unicodedata", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_language_py", "target": "$graphify-root$_src_language_normalize_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L462", "weight": 1.0}, {"source": "$graphify-root$_src_language_py", "target": "$graphify-root$_src_language_extract_words", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_src_language_py", "target": "$graphify-root$_src_language_detect_language", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L477", "weight": 1.0}, {"source": "$graphify-root$_src_language_detect_language", "target": "$graphify-root$_src_language_extract_words", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L485", "weight": 1.0}, {"source": "$graphify-root$_src_language_detect_language", "target": "$graphify-root$_src_language_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L556", "weight": 1.0}, {"source": "$graphify-root$_src_language_rationale_1", "target": "$graphify-root$_src_language_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_language_rationale_463", "target": "$graphify-root$_src_language_normalize_text", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L463", "weight": 1.0}, {"source": "$graphify-root$_src_language_rationale_473", "target": "$graphify-root$_src_language_extract_words", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_src_language_rationale_478", "target": "$graphify-root$_src_language_detect_language", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/language.py", "source_location": "L478", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_language_normalize_text", "callee": "normalize", "is_member_call": true, "source_file": "src/language.py", "source_location": "L467", "receiver": "unicodedata"}, {"caller_nid": "$graphify-root$_src_language_normalize_text", "callee": "lower", "is_member_call": true, "source_file": "src/language.py", "source_location": "L467", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_language_normalize_text", "callee": "join", "is_member_call": true, "source_file": "src/language.py", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_src_language_normalize_text", "callee": "category", "is_member_call": true, "source_file": "src/language.py", "source_location": "L469", "receiver": "unicodedata"}, {"caller_nid": "$graphify-root$_src_language_extract_words", "callee": "findall", "is_member_call": true, "source_file": "src/language.py", "source_location": "L474", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_language_extract_words", "callee": "lower", "is_member_call": true, "source_file": "src/language.py", "source_location": "L474", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "strip", "is_member_call": true, "source_file": "src/language.py", "source_location": "L482", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "items", "is_member_call": true, "source_file": "src/language.py", "source_location": "L493", "receiver": "LANGUAGE_STOPWORDS"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "intersection", "is_member_call": true, "source_file": "src/language.py", "source_location": "L494", "receiver": "word_set"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "items", "is_member_call": true, "source_file": "src/language.py", "source_location": "L498", "receiver": "scores"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "intersection", "is_member_call": true, "source_file": "src/language.py", "source_location": "L560", "receiver": "norm_word_set"}, {"caller_nid": "$graphify-root$_src_language_detect_language", "callee": "intersection", "is_member_call": true, "source_file": "src/language.py", "source_location": "L561", "receiver": "norm_word_set"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/7c136ac4d442e47a2f8914303880ce265c2fe49485eb182014fc3e10c06f9e71.json b/graphify-out/cache/ast/v0.9.47-s2/7c136ac4d442e47a2f8914303880ce265c2fe49485eb182014fc3e10c06f9e71.json new file mode 100644 index 0000000..621573f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/7c136ac4d442e47a2f8914303880ce265c2fe49485eb182014fc3e10c06f9e71.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_benchmark_24_py", "label": "test_benchmark_24.py", "file_type": "code", "source_file": "tests/test_benchmark_24.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_benchmark_24.py"}, {"id": "$graphify-root$_tests_test_benchmark_24_classifier", "label": "classifier()", "file_type": "code", "source_file": "tests/test_benchmark_24.py", "source_location": "L23", "_callable": true}, {"id": "parametrize", "label": "parametrize", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_benchmark_24.py"}, {"id": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "label": "test_benchmark_case()", "file_type": "code", "source_file": "tests/test_benchmark_24.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_benchmark_24_rationale_1", "label": "Controlled 24-case benchmark suite for Multilingual NLP Entity Inherence\u2026", "file_type": "rationale", "source_file": "tests/test_benchmark_24.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "src_classifier", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_classifier", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L22", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "$graphify-root$_tests_test_benchmark_24_classifier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "target": "parametrize", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L27", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_benchmark_24_py", "target": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_benchmark_24_rationale_1", "target": "$graphify-root$_tests_test_benchmark_24_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_benchmark_24.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_benchmark_24_classifier", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_benchmark_24.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "is_file", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L34", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "is_file", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L35", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "is_file", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L36", "receiver": "expected_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "from_json_str", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L38", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L38", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L39", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "loads", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L40", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L40", "receiver": "expected_file"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "classify", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L42", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "upper", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L46", "receiver": "lang"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "upper", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L51", "receiver": "lang"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "upper", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L56", "receiver": "lang"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "get", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L60", "receiver": "expected"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "upper", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L62", "receiver": "lang"}, {"caller_nid": "$graphify-root$_tests_test_benchmark_24_test_benchmark_case", "callee": "upper", "is_member_call": true, "source_file": "tests/test_benchmark_24.py", "source_location": "L68", "receiver": "lang"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/7f7aae057ecbda26edd747d24241e9cf36f611c71c5d70d0aa308df7d71e0547.json b/graphify-out/cache/ast/v0.9.47-s2/7f7aae057ecbda26edd747d24241e9cf36f611c71c5d70d0aa308df7d71e0547.json new file mode 100644 index 0000000..620db66 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/7f7aae057ecbda26edd747d24241e9cf36f611c71c5d70d0aa308df7d71e0547.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_language_py", "label": "test_language.py", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_language_test_normalize_text", "label": "test_normalize_text()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L6", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_portuguese", "label": "test_detect_portuguese()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_english", "label": "test_detect_english()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L21", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_spanish", "label": "test_detect_spanish()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_german", "label": "test_detect_german()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_italian", "label": "test_detect_italian()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_detect_french", "label": "test_detect_french()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_tests_test_language_test_empty_language", "label": "test_empty_language()", "file_type": "code", "source_file": "tests/test_language.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_tests_test_language_rationale_1", "label": "Unit tests for language detection and text normalization.", "file_type": "rationale", "source_file": "tests/test_language.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_language_py", "target": "src_language", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_normalize_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_portuguese", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_english", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_spanish", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_german", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_italian", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_detect_french", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_py", "target": "$graphify-root$_tests_test_language_test_empty_language", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_language_rationale_1", "target": "$graphify-root$_tests_test_language_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_language.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_language_test_normalize_text", "callee": "normalize_text", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L7", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_normalize_text", "callee": "normalize_text", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L8", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_normalize_text", "callee": "normalize_text", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L10", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_normalize_text", "callee": "normalize_text", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_portuguese", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_english", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L23", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_spanish", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_german", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_italian", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_detect_french", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_language_test_empty_language", "callee": "detect_language", "is_member_call": false, "source_file": "tests/test_language.py", "source_location": "L59", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/7fc86ae608bd6656cd4d2d91285ab1857edf96864249e6df308dc5c327b35775.json b/graphify-out/cache/ast/v0.9.47-s2/7fc86ae608bd6656cd4d2d91285ab1857edf96864249e6df308dc5c327b35775.json new file mode 100644 index 0000000..e23f64e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/7fc86ae608bd6656cd4d2d91285ab1857edf96864249e6df308dc5c327b35775.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_classify_py", "label": "classify.py", "file_type": "code", "source_file": "classify.py", "source_location": "L1"}, {"id": "$graphify-root$_classify_parse_args", "label": "parse_args()", "file_type": "code", "source_file": "classify.py", "source_location": "L27", "_callable": true}, {"id": "namespace", "label": "Namespace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/classify.py"}, {"id": "$graphify-root$_classify_emit_error", "label": "emit_error()", "file_type": "code", "source_file": "classify.py", "source_location": "L72", "_callable": true}, {"id": "errorcode", "label": "ErrorCode", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/classify.py"}, {"id": "$graphify-root$_classify_main", "label": "main()", "file_type": "code", "source_file": "classify.py", "source_location": "L97", "_callable": true}], "edges": [{"source": "$graphify-root$_classify_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "src", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "src_classifier", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "$graphify-root$_classify_parse_args", "relation": "contains", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_classify_parse_args", "target": "namespace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "$graphify-root$_classify_emit_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_classify_emit_error", "target": "errorcode", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_classify_py", "target": "$graphify-root$_classify_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_classify_main", "target": "$graphify-root$_classify_parse_args", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_classify_main", "target": "$graphify-root$_classify_emit_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "classify.py", "source_location": "L108", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_classify_parse_args", "callee": "ArgumentParser", "is_member_call": true, "source_file": "classify.py", "source_location": "L28", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L32", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L38", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L40"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L44", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L47"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L51", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L57", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "add_argument", "is_member_call": true, "source_file": "classify.py", "source_location": "L63", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_parse_args", "callee": "parse_args", "is_member_call": true, "source_file": "classify.py", "source_location": "L69", "receiver": "parser"}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "ClassificationError", "is_member_call": false, "source_file": "classify.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "to_json_str", "is_member_call": true, "source_file": "classify.py", "source_location": "L83", "receiver": "err"}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "Path", "is_member_call": false, "source_file": "classify.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "mkdir", "is_member_call": true, "source_file": "classify.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "write_text", "is_member_call": true, "source_file": "classify.py", "source_location": "L89", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_classify_emit_error", "callee": "write", "is_member_call": true, "source_file": "classify.py", "source_location": "L93", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "Path", "is_member_call": false, "source_file": "classify.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "Path", "is_member_call": false, "source_file": "classify.py", "source_location": "L104", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "is_file", "is_member_call": true, "source_file": "classify.py", "source_location": "L107", "receiver": "ecp_path"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "read_text", "is_member_call": true, "source_file": "classify.py", "source_location": "L116", "receiver": "ecp_path"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L121"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "from_json_str", "is_member_call": true, "source_file": "classify.py", "source_location": "L126", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L128"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "is_file", "is_member_call": true, "source_file": "classify.py", "source_location": "L144", "receiver": "content_path"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "read_text", "is_member_call": true, "source_file": "classify.py", "source_location": "L153", "receiver": "content_path"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L158"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "strip", "is_member_call": true, "source_file": "classify.py", "source_location": "L162", "receiver": "content_raw"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "strip", "is_member_call": true, "source_file": "classify.py", "source_location": "L166", "receiver": "content_raw"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "classify.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "classify", "is_member_call": true, "source_file": "classify.py", "source_location": "L177", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L181"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L189"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "to_json_str", "is_member_call": true, "source_file": "classify.py", "source_location": "L193", "receiver": "result"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "Path", "is_member_call": false, "source_file": "classify.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "mkdir", "is_member_call": true, "source_file": "classify.py", "source_location": "L199", "receiver": null}, {"caller_nid": "$graphify-root$_classify_main", "callee": "write_text", "is_member_call": true, "source_file": "classify.py", "source_location": "L200", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "classify.py", "source_location": "L205"}, {"caller_nid": "$graphify-root$_classify_main", "callee": "write", "is_member_call": true, "source_file": "classify.py", "source_location": "L208", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/a0cc52f77406d8cb1d73d3353daae0f231a82d4fb6d47028d08028fb18757b65.json b/graphify-out/cache/ast/v0.9.47-s2/a0cc52f77406d8cb1d73d3353daae0f231a82d4fb6d47028d08028fb18757b65.json new file mode 100644 index 0000000..513cc46 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/a0cc52f77406d8cb1d73d3353daae0f231a82d4fb6d47028d08028fb18757b65.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_extract_article_contents_py", "label": "test_extract_article_contents.py", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "label": "sample_input_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_article_contents.py"}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "label": "test_input_article_creation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L96", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "label": "test_load_search_json_valid()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "label": "test_load_search_json_invalid_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "label": "test_save_extracted_json()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "label": "test_trafilatura_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L190", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "label": "test_newspaper_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L199", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "label": "test_readability_extractor()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L211", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "label": "test_extract_all_engines()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L221", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "label": "test_extractor_error_isolation_on_faulty_engine()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "label": "test_crawler_error_isolation()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "label": "test_process_batch_with_limit()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "label": "test_cli_main_success()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "label": "test_cli_main_missing_input_file()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "label": "test_e2e_live_article_extraction()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L322", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "label": "test_e2e_cli_live_execution()", "file_type": "code", "source_file": "tests/test_extract_article_contents.py", "source_location": "L366", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_article_contents_rationale_323", "label": "Valida E2E a extra\u00e7\u00e3o real ao vivo com Foxcape e os 3 motores em lote.", "file_type": "rationale", "source_file": "tests/test_extract_article_contents.py", "source_location": "L323"}, {"id": "$graphify-root$_tests_test_extract_article_contents_rationale_367", "label": "Valida E2E a execu\u00e7\u00e3o do CLI real de ponta a ponta.", "file_type": "rationale", "source_file": "tests/test_extract_article_contents.py", "source_location": "L367"}], "edges": [{"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "scripts_extract_article_contents", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L62", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L322", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L322", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_py", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L366", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L366", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L368", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_rationale_323", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_article_contents_rationale_367", "target": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_article_contents.py", "source_location": "L367", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L87", "receiver": "input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_sample_input_json", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L87", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_input_article_creation", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L107", "receiver": "article"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_valid", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L122", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "FileNotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L122"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_load_search_json_invalid_file", "callee": "load_search_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractionBatchReport", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ExtractedArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L134", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "InputArticle", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "TrafilaturaData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "NewspaperData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "ReadabilityData", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "save_extracted_json", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L179", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L180", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_save_extracted_json", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L180", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L192", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L192"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_trafilatura_extractor", "callee": "TrafilaturaData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L193"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L201", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L202"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "NewspaperData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L204"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_newspaper_extractor", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L207"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityExtractor", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L212", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "extract", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L213", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L213"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_readability_extractor", "callee": "ReadabilityData", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extract_all_engines", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L223"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L236", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L238", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "extract_all_engines", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L240", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_extractor_error_isolation_on_faulty_engine", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L241"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L256", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "mock_crawl", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L257", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L257"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L257", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L257"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_crawler_error_isolation", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L258", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L280", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L281"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L281"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L283", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L283"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L283", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L283"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L284", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_process_batch_with_limit", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L293", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L299", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L300"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "SAMPLE_HTML", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_extract_article_contents.py", "source_location": "L300"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L302", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L302"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "object", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L302", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "ArticleCrawler", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L302"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L303", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_success", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L308", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_cli_main_missing_input_file", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L313", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L325", "receiver": "live_input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "skip", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L326", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "process_batch", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L345", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_article_contents.py", "source_location": "L353"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L360", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L361", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_live_article_extraction", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L361", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L369", "receiver": "live_input_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "skip", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L370", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_article_contents.py", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L378", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L379", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_article_contents_test_e2e_cli_live_execution", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_article_contents.py", "source_location": "L379", "receiver": "out_file"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/a76fc087a959496bc2cf4767baaed89628bd945e1aaa8e981be840cf1240f1ba.json b/graphify-out/cache/ast/v0.9.47-s2/a76fc087a959496bc2cf4767baaed89628bd945e1aaa8e981be840cf1240f1ba.json new file mode 100644 index 0000000..d0c6e20 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/a76fc087a959496bc2cf4767baaed89628bd945e1aaa8e981be840cf1240f1ba.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_article_contents_py", "label": "extract_article_contents.py", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle", "label": "InputArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L34", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L43", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "label": "TrafilaturaData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "label": "NewspaperData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L102", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "label": "ReadabilityData", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L152", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L162", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "label": "ExtractedArticle", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L174", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L187", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "label": "ExtractionBatchReport", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L202", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "label": "TrafilaturaExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L228", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L232", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "label": "NewspaperExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L332", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L336", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "label": "ReadabilityExtractor", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L395", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L399", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "label": "extract_all_engines()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L427", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "label": "ArticleCrawler", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L482", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "label": ".__init__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L485", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "label": ".start()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L490", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "label": ".close()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L496", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "label": ".__enter__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L504", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "label": ".__exit__()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L508", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "label": ".crawl()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L511", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_log_info", "label": "log_info()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L533", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_load_search_json", "label": "load_search_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L540", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "label": "save_extracted_json()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L568", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_process_batch", "label": "process_batch()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L575", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "label": "parse_arguments()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L688", "_callable": true}, {"id": "namespace", "label": "Namespace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_article_contents.py"}, {"id": "$graphify-root$_scripts_extract_article_contents_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_article_contents.py", "source_location": "L742", "_callable": true}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_35", "label": "Metadados originais da not\u00edcia contida no JSON de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L35"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_55", "label": "Dados completos extra\u00eddos pelo motor Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L55"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_103", "label": "Dados completos extra\u00eddos e enriquecidos com NLP pelo motor Newspaper4k.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L103"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_153", "label": "Dados completos higienizados pelo algoritmo Readability.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L153"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_175", "label": "Resultado consolidado da extra\u00e7\u00e3o de um artigo.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L175"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_203", "label": "Relat\u00f3rio consolidado de sa\u00edda do processamento de um lote.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L203"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_229", "label": "Motor de extra\u00e7\u00e3o baseado na biblioteca Trafilatura.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L229"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_333", "label": "Motor de extra\u00e7\u00e3o baseado no Newspaper4k com NLP.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L333"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_396", "label": "Motor de extra\u00e7\u00e3o baseado no algoritmo Readability (readability-lxml).", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L396"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_430", "label": "Executa a extra\u00e7\u00e3o simult\u00e2nea pelos tr\u00eas motores de conte\u00fado com isolamento\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L430"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_483", "label": "Gerenciador de ciclo de vida e requisi\u00e7\u00f5es via Foxcape Headless.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L483"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_512", "label": "Navega at\u00e9 a URL, aguarda o carregamento do DOM e retorna (html, page_title,\u2026", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L512"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_534", "label": "Escreve mensagem informativa no stderr.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L534"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_541", "label": "Carrega o arquivo JSON gerado pelo extrator de not\u00edcias.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L541"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_569", "label": "Salva o relat\u00f3rio consolidado em formato JSON com UTF-8.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L569"}, {"id": "$graphify-root$_scripts_extract_article_contents_rationale_583", "label": "Executa o pipeline completo de extra\u00e7\u00e3o em lote para o arquivo de entrada.", "file_type": "rationale", "source_file": "scripts/extract_article_contents.py", "source_location": "L583"}], "edges": [{"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "trafilatura", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "newspaper", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "readability", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_inputarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturadata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperdata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilitydata_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L332", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L399", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L399", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L482", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L485", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L490", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L496", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L504", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L504", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L511", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L533", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L540", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L540", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L540", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L568", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L568", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L568", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L575", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L575", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L575", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L575", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L688", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "target": "namespace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L688", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_py", "target": "$graphify-root$_scripts_extract_article_contents_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L742", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L274", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L369", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L434", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L450", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L466", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_enter", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L505", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_exit", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L509", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L516", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_load_search_json", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L556", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L586", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L593", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L607", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L619", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L623", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L664", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_process_batch", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L673", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L744", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L745", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_main", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L752", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_35", "target": "$graphify-root$_scripts_extract_article_contents_inputarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_55", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturadata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_103", "target": "$graphify-root$_scripts_extract_article_contents_newspaperdata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_153", "target": "$graphify-root$_scripts_extract_article_contents_readabilitydata", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_175", "target": "$graphify-root$_scripts_extract_article_contents_extractedarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_203", "target": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_229", "target": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_333", "target": "$graphify-root$_scripts_extract_article_contents_newspaperextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_396", "target": "$graphify-root$_scripts_extract_article_contents_readabilityextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_430", "target": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L430", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_483", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L483", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_512", "target": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L512", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_534", "target": "$graphify-root$_scripts_extract_article_contents_log_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L534", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_541", "target": "$graphify-root$_scripts_extract_article_contents_load_search_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L541", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_569", "target": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L569", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_article_contents_rationale_583", "target": "$graphify-root$_scripts_extract_article_contents_process_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_article_contents.py", "source_location": "L583", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L189", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L196", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractedarticle_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extractionbatchreport_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L219", "receiver": "a"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "bare_extraction", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L235", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L247", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L259", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "loads", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L268", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L271"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L272", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L272", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L273", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L273", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L275", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L276", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L277", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L278", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L279", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L280", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L281", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L284", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L285", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L286", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L287", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L288", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L289", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L290", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L290", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L320", "receiver": "trafilatura"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L322", "receiver": "raw_json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L323", "receiver": "raw_text"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L324", "receiver": "markdown_text"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_trafilaturaextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L329"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L338", "receiver": "language"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "Article", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "download", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L341", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "parse", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L342", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "nlp", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L346", "receiver": "article"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "keyword_scores", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L349"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "tags", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L365"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "movies", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L366"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_img", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L377"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "canonical_link", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L381"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "article_html", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L382"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_description", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L383"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_favicon", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L385"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_site_name", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L386"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "meta_lang", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_article_contents.py", "source_location": "L387"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_newspaperextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L392"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "Document", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L401", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L402", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "short_title", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L403", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "summary", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L404", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "author", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L407", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L412", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L413", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_readabilityextractor_extract", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L424"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L432", "receiver": "TrafilaturaExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L444"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L448", "receiver": "NewspaperExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L460"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "extract", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L464", "receiver": "ReadabilityExtractor"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_extract_all_engines", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L471"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L492", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "Foxcape", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L493", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_start", "callee": "start", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L494", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_close", "callee": "close", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_articlecrawler_crawl", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L519", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L536", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_log_info", "callee": "flush", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L537", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L542", "receiver": "file_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "scripts/extract_article_contents.py", "source_location": "L543", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "load", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L546", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L546"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L548", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L549", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L550", "receiver": "data"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L554"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L555", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L559", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L560", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_load_search_json", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L561", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L570", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "dump", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L572", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L572"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_save_extracted_json", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L572", "receiver": "report"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L605", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "crawl", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L613", "receiver": "crawler"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L642"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L659", "receiver": "extracted_list"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "time", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L661", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L662", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_process_batch", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L662", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L689", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L693", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L697"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L700", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L704"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L708", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L712"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L716", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L721"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L725", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_article_contents.py", "source_location": "L729"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L733", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_parse_arguments", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L739", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L748", "receiver": "input_path"}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L749", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_article_contents_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_article_contents.py", "source_location": "L765", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/a789a6ba02724ad75604dcc56991e8b7989558abe673d4701242012723954407.json b/graphify-out/cache/ast/v0.9.47-s2/a789a6ba02724ad75604dcc56991e8b7989558abe673d4701242012723954407.json new file mode 100644 index 0000000..b4f6ff9 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/a789a6ba02724ad75604dcc56991e8b7989558abe673d4701242012723954407.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_parser_py", "label": "parser.py", "file_type": "code", "source_file": "src/parser.py", "source_location": "L1"}, {"id": "$graphify-root$_src_parser_strip_markdown", "label": "strip_markdown()", "file_type": "code", "source_file": "src/parser.py", "source_location": "L8", "_callable": true}, {"id": "$graphify-root$_src_parser_extract_sentences", "label": "extract_sentences()", "file_type": "code", "source_file": "src/parser.py", "source_location": "L42", "_callable": true}, {"id": "$graphify-root$_src_parser_extract_evidence_snippets", "label": "extract_evidence_snippets()", "file_type": "code", "source_file": "src/parser.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_src_parser_rationale_1", "label": "Markdown content parser and excerpt extraction utilities.", "file_type": "rationale", "source_file": "src/parser.py", "source_location": "L1"}, {"id": "$graphify-root$_src_parser_rationale_9", "label": "Remove markdown syntax markers (headers, bold, italics, links, code blocks) to\u2026", "file_type": "rationale", "source_file": "src/parser.py", "source_location": "L9"}, {"id": "$graphify-root$_src_parser_rationale_43", "label": "Split text into individual sentences.", "file_type": "rationale", "source_file": "src/parser.py", "source_location": "L43"}, {"id": "$graphify-root$_src_parser_rationale_53", "label": "Extract relevant sentence excerpts from Markdown text that contain any of the\u2026", "file_type": "rationale", "source_file": "src/parser.py", "source_location": "L53"}], "edges": [{"source": "$graphify-root$_src_parser_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_parser_py", "target": "$graphify-root$_src_parser_strip_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_parser_py", "target": "$graphify-root$_src_parser_extract_sentences", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_src_parser_py", "target": "$graphify-root$_src_parser_extract_evidence_snippets", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_src_parser_extract_evidence_snippets", "target": "$graphify-root$_src_parser_strip_markdown", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_parser_extract_evidence_snippets", "target": "$graphify-root$_src_parser_extract_sentences", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_src_parser_rationale_1", "target": "$graphify-root$_src_parser_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_parser_rationale_9", "target": "$graphify-root$_src_parser_strip_markdown", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_parser_rationale_43", "target": "$graphify-root$_src_parser_extract_sentences", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_parser_rationale_53", "target": "$graphify-root$_src_parser_extract_evidence_snippets", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/parser.py", "source_location": "L53", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L16", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L17", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L20", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L23", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L26", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L29", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L30", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L33", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L34", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L35", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "strip", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_src_parser_strip_markdown", "callee": "sub", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L38", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_extract_sentences", "callee": "split", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L45", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_extract_sentences", "callee": "strip", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L45", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_parser_extract_sentences", "callee": "strip", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L46", "receiver": "s"}, {"caller_nid": "$graphify-root$_src_parser_extract_sentences", "callee": "strip", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L46", "receiver": "s"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "lower", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L65", "receiver": "t"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "lower", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L69", "receiver": "sentence"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "search", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L71", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "escape", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L71", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "strip", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L72", "receiver": "sentence"}, {"caller_nid": "$graphify-root$_src_parser_extract_evidence_snippets", "callee": "append", "is_member_call": true, "source_file": "src/parser.py", "source_location": "L74", "receiver": "evidence"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/aa17b59997ab6bb549a918fb1026ddf5a5c5143c75c234895dc32447e2c5b85a.json b/graphify-out/cache/ast/v0.9.47-s2/aa17b59997ab6bb549a918fb1026ddf5a5c5143c75c234895dc32447e2c5b85a.json new file mode 100644 index 0000000..08e06fa --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/aa17b59997ab6bb549a918fb1026ddf5a5c5143c75c234895dc32447e2c5b85a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_google_news_py", "label": "extract_google_news.py", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery", "label": "SearchQuery", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "label": ".clean_keyword()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "label": ".clean_language()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L55", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "label": ".clean_locale()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle", "label": "NewsArticle", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L64", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L73", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult", "label": "ExtractionResult", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L84", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L95", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "label": "get_hl_gl_ceid()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L107", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "label": "_normalize_text_for_comparison()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "label": "parse_google_news_rss()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "label": "resolve_article_url()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L207", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "label": "resolve_articles_urls()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "label": "_fetch_rss_content()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L253", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_extract_google_news", "label": "extract_google_news()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_build_parser", "label": "build_parser()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L336", "_callable": true}, {"id": "argumentparser", "label": "ArgumentParser", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_google_news.py"}, {"id": "$graphify-root$_scripts_extract_google_news_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_google_news.py", "source_location": "L403", "_callable": true}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_33", "label": "Value Object com par\u00e2metros de busca validados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_65", "label": "Entidade que representa uma not\u00edcia extra\u00edda.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L65"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_85", "label": "Resultado consolidado da extra\u00e7\u00e3o.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L85"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_108", "label": "Mapeia idioma e locale para os par\u00e2metros hl, gl e ceid do Google News.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L108"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_152", "label": "Remove pontua\u00e7\u00e3o e espa\u00e7os extras para compara\u00e7\u00e3o de redund\u00e2ncia.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L152"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_157", "label": "Parseia o XML do RSS do Google News e extrai os itens estruturados.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L157"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_208", "label": "Resolve a URL intermedi\u00e1ria do Google News para a URL real do ve\u00edculo.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L208"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_223", "label": "Resolve em paralelo as URLs intermedi\u00e1rias do Google News para os links finais\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L223"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_254", "label": "Realiza a requisi\u00e7\u00e3o ao feed RSS utilizando a biblioteca Foxcape como motor\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L254"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_300", "label": "Orquestra a consulta ao Google News e retorna o resultado consolidado com URLs\u2026", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L300"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_337", "label": "Cria e configura o parser de argumentos CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L337"}, {"id": "$graphify-root$_scripts_extract_google_news_rationale_404", "label": "Ponto de entrada do script CLI.", "file_type": "rationale", "source_file": "scripts/extract_google_news.py", "source_location": "L404"}], "edges": [{"source": "$graphify-root$_scripts_extract_google_news_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "concurrent_futures", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_error", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_parse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "urllib_request", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "bs4", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "foxcape", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "googlenewsdecoder", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_searchquery", "target": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle", "target": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_newsarticle_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult", "target": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_build_parser", "target": "argumentparser", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_py", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_extract_google_news", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L416", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L420", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_main", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L435", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_33", "target": "$graphify-root$_scripts_extract_google_news_searchquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_65", "target": "$graphify-root$_scripts_extract_google_news_newsarticle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_85", "target": "$graphify-root$_scripts_extract_google_news_extractionresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_108", "target": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_152", "target": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_157", "target": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_208", "target": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L208", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_223", "target": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_254", "target": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L254", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_300", "target": "$graphify-root$_scripts_extract_google_news_extract_google_news", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_337", "target": "$graphify-root$_scripts_extract_google_news_build_parser", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L337", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_google_news_rationale_404", "target": "$graphify-root$_scripts_extract_google_news_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_google_news.py", "source_location": "L404", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_keyword", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_language", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_searchquery_clean_locale", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extractionresult_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L103", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L111", "receiver": "lang_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "split", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L134", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L138", "receiver": "lang_clean"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "upper", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_get_hl_gl_ceid", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L141", "receiver": "locale"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L153", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "lower", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L153", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_normalize_text_for_comparison", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L153", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find_all", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L165", "receiver": "soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L172", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L173", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L174", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "find", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L175", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L177", "receiver": "title_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L178", "receiver": "link_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L179", "receiver": "pubdate_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L180", "receiver": "desc_tag"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "BeautifulSoup", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L185", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "get_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L186", "receiver": "desc_soup"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_parse_google_news_rss", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L194", "receiver": "articles"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "gnewsdecoder", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L212", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L213"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L213", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "get", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L213", "receiver": "res"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_article_url", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L228", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "ThreadPoolExecutor", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L241", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "_resolve_single", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L242"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_resolve_articles_urls", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L246", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "FoxcapeConfig", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L258", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "fetch", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L263", "receiver": "Foxcape"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L271", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L272"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L272"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L272"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L272"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "urlopen", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L284", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "decode", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "read", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L285", "receiver": "response"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "OSError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L289"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "TimeoutError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L290"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_fetch_rss_content", "callee": "RuntimeError", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L292", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "quote_plus", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L309", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L320", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "isoformat", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_extract_google_news", "callee": "now", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L331", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L338", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L342", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L350", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L358", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L365", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L369"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L373", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L380", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L385", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_build_parser", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L392", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L407", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "reconfigure", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L412", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L419", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/extract_google_news.py", "source_location": "L426"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L427", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_google_news.py", "source_location": "L430"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "silent", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "scripts/extract_google_news.py", "source_location": "L432"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L436", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L437", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/extract_google_news.py", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L445", "receiver": "out_path"}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_google_news_main", "callee": "write", "is_member_call": true, "source_file": "scripts/extract_google_news.py", "source_location": "L458", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/ab0b0276581056a63d591237beb2e4e8fe3a4441c06963a847dd1f74b569dd88.json b/graphify-out/cache/ast/v0.9.47-s2/ab0b0276581056a63d591237beb2e4e8fe3a4441c06963a847dd1f74b569dd88.json new file mode 100644 index 0000000..2a2659d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/ab0b0276581056a63d591237beb2e4e8fe3a4441c06963a847dd1f74b569dd88.json @@ -0,0 +1 @@ +{"nodes": [{"id": "pkg_text_nlp_classifier", "label": "text-nlp-classifier", "file_type": "code", "type": "package", "ecosystem": "python", "source_file": "pyproject.toml", "source_location": "L1", "version": "0.1.0"}], "edges": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/acf74e38373f16e923350dbcf514b2958215391024c8abed3b8a621b0e69bd61.json b/graphify-out/cache/ast/v0.9.47-s2/acf74e38373f16e923350dbcf514b2958215391024c8abed3b8a621b0e69bd61.json new file mode 100644 index 0000000..d2226f1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/acf74e38373f16e923350dbcf514b2958215391024c8abed3b8a621b0e69bd61.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_adapters_embeddings_py", "label": "embeddings.py", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "label": "LocalEmbeddingsAdapter", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L13", "_callable": true, "_callable_class": true}, {"id": "basenlpadapter", "label": "BaseNLPAdapter", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/embeddings.py"}, {"id": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_init", "label": ".__init__()", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L16", "_callable": true}, {"id": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L23", "_callable": true}, {"id": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "label": ".evaluate_similarity()", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L31", "_callable": true}, {"id": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_disambiguate", "label": ".disambiguate()", "file_type": "code", "source_file": "src/adapters/embeddings.py", "source_location": "L37", "_callable": true}, {"id": "ecpsnapshot", "label": "ECPSnapshot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/embeddings.py"}, {"id": "classificationresult", "label": "ClassificationResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/adapters/embeddings.py"}, {"id": "$graphify-root$_src_adapters_embeddings_rationale_1", "label": "Optional local vector embeddings adapter (Tier 2). Disabled by default.\u2026", "file_type": "rationale", "source_file": "src/adapters/embeddings.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_embeddings_rationale_14", "label": "Optional adapter for local multilingual semantic vector embeddings.", "file_type": "rationale", "source_file": "src/adapters/embeddings.py", "source_location": "L14"}], "edges": [{"source": "$graphify-root$_src_adapters_embeddings_py", "target": "src_adapters_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_py", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "target": "basenlpadapter", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_disambiguate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_disambiguate", "target": "ecpsnapshot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_disambiguate", "target": "classificationresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_evaluate_similarity", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_rationale_1", "target": "$graphify-root$_src_adapters_embeddings_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_adapters_embeddings_rationale_14", "target": "$graphify-root$_src_adapters_embeddings_localembeddingsadapter", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/embeddings.py", "source_location": "L14", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/b8351909b93111f8f1e50f0f100446d3f579d0c11823eba4936c72a617aba5f8.json b/graphify-out/cache/ast/v0.9.47-s2/b8351909b93111f8f1e50f0f100446d3f579d0c11823eba4936c72a617aba5f8.json new file mode 100644 index 0000000..76afc9e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/b8351909b93111f8f1e50f0f100446d3f579d0c11823eba4936c72a617aba5f8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_md", "label": "extraction.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "label": "Extraction Pipeline Checklist: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_1_requirement_completeness", "label": "1. Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L13"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_2_requirement_clarity_non_ambiguity", "label": "2. Requirement Clarity & Non-Ambiguity", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L24"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_3_requirement_consistency_data_contracts", "label": "3. Requirement Consistency & Data Contracts", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L33"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_4_scenario_edge_case_coverage", "label": "4. Scenario & Edge Case Coverage", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L41"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_5_non_functional_operational_readiness", "label": "5. Non-Functional & Operational Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L51"}, {"id": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L58"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_md", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_md", "target": "$graphify-root$_specs_003_article_content_extractor_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/003-article-content-extractor/spec.md"}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_md", "target": "$graphify-root$_specs_003_article_content_extractor_data_model_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/003-article-content-extractor/data-model.md"}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_md", "target": "$graphify-root$_specs_003_article_content_extractor_contracts_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_1_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_2_requirement_clarity_non_ambiguity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_3_requirement_consistency_data_contracts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_4_scenario_edge_case_coverage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_5_non_functional_operational_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_extraction_pipeline_checklist_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_checklists_extraction_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/checklists/extraction.md", "source_location": "L58", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d22acc369c66aebe533180f9242e14407092b5f60985ea4e004fef14d07d391a.json b/graphify-out/cache/ast/v0.9.47-s2/d22acc369c66aebe533180f9242e14407092b5f60985ea4e004fef14d07d391a.json new file mode 100644 index 0000000..47f892b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d22acc369c66aebe533180f9242e14407092b5f60985ea4e004fef14d07d391a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_readme_md", "label": "README.md", "file_type": "document", "node_kind": "page", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_textnlpclassifierapp", "label": "\ud83e\udde0 TextNLPClassifierApp", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_tabela_de_conte\u00fados", "label": "\ud83d\udcd1 Tabela de Conte\u00fados", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L13"}, {"id": "$graphify-root$_readme_vis\u00e3o_geral", "label": "\ud83c\udf1f Vis\u00e3o Geral", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L38"}, {"id": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "label": "\u2699\ufe0f Instala\u00e7\u00e3o e Setup", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L47"}, {"id": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "label": "1. Clonar o Reposit\u00f3rio e Criar Ambiente Virtual", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L49"}, {"id": "$graphify-root$_readme_2_instalar_depend\u00eancias", "label": "2. Instalar Depend\u00eancias", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L62"}, {"id": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "label": "3. Baixar Bin\u00e1rios do Navegador Stealth (Camoufox)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L68"}, {"id": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "label": "1. \ud83e\udde0 Classificador de Conte\u00fado e Iner\u00eancia (NLP / LLM / ECP)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L78"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L80"}, {"id": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "label": "Arquitetura de Classifica\u00e7\u00e3o em 3 Tiers", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L86"}, {"id": "$graphify-root$_readme_categorias_de_decis\u00e3o", "label": "Categorias de Decis\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L107"}, {"id": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "label": "Formato do ECP Snapshot e Markdown", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L116"}, {"id": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "label": "Exemplo de ECP Snapshot (`ecp_sample.json`):", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L118"}, {"id": "$graphify-root$_readme_exemplos_de_uso_cli", "label": "Exemplos de Uso CLI", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L140"}, {"id": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "label": "2. \ud83d\udcf0 Extrator de Manchetes do Google News", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L155"}, {"id": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_157", "label": "O que \u00e9 e Como Funciona", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L157"}, {"id": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "label": "Diferenciais T\u00e9cnicos", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L161"}, {"id": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "label": "Argumentos e Flags de Linha de Comando", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L169"}, {"id": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "label": "Exemplos Pr\u00e1ticos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L182"}, {"id": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "label": "1. River Plate (Argentina / Espanhol / 2 P\u00e1ginas / Salvar em Arquivo)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L184"}, {"id": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "label": "2. Cruzeiro (Brasil / Portugu\u00eas / Formatado no Terminal)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L198"}, {"id": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "label": "3. F\u00f3rmula 1 (Inglaterra / Ingl\u00eas)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L203"}, {"id": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "label": "4. Filtragem com `jq` em Modo Silencioso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L208"}, {"id": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "label": "3. \ud83d\udcf0 Extrator e Parser Multimotor de Artigos", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L215"}, {"id": "$graphify-root$_readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", "label": "Vis\u00e3o Geral e Tr\u00edplice Extra\u00e7\u00e3o", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L217"}, {"id": "$graphify-root$_readme_argumentos_e_flags_cli", "label": "Argumentos e Flags CLI", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L227"}, {"id": "$graphify-root$_readme_exemplos_de_uso", "label": "Exemplos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L238"}, {"id": "$graphify-root$_readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", "label": "1. Extra\u00e7\u00e3o Completa Autom\u00e1tica", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L240"}, {"id": "$graphify-root$_readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", "label": "2. Amostragem R\u00e1pida (Limit 2 Not\u00edcias)", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L246"}, {"id": "$graphify-root$_readme_3_destino_customizado_e_timeout_ajustado", "label": "3. Destino Customizado e Timeout Ajustado", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L251"}, {"id": "$graphify-root$_readme_estrutura_do_projeto", "label": "\ud83d\udcc1 Estrutura do Projeto", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L258"}, {"id": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "label": "\ud83e\uddea Testes e Qualidade de C\u00f3digo", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L287"}, {"id": "$graphify-root$_readme_licen\u00e7a", "label": "\ud83d\udcc4 Licen\u00e7a", "file_type": "document", "node_kind": "heading", "source_file": "README.md", "source_location": "L308"}], "edges": [{"source": "$graphify-root$_readme_md", "target": "$graphify-root$_readme_textnlpclassifierapp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_tabela_de_conte\u00fados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_vis\u00e3o_geral", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_1_clonar_o_reposit\u00f3rio_e_criar_ambiente_virtual", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_2_instalar_depend\u00eancias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_readme_instala\u00e7\u00e3o_e_setup", "target": "$graphify-root$_readme_3_baixar_bin\u00e1rios_do_navegador_stealth_camoufox", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_arquitetura_de_classifica\u00e7\u00e3o_em_3_tiers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_categorias_de_decis\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_readme_formato_do_ecp_snapshot_e_markdown", "target": "$graphify-root$_readme_exemplo_de_ecp_snapshot_ecp_sample_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_readme_1_classificador_de_conte\u00fado_e_iner\u00eancia_nlp_llm_ecp", "target": "$graphify-root$_readme_exemplos_de_uso_cli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_o_que_\u00e9_e_como_funciona_157", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_diferenciais_t\u00e9cnicos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_argumentos_e_flags_de_linha_de_comando", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_readme_2_extrator_de_manchetes_do_google_news", "target": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_1_river_plate_argentina_espanhol_2_p\u00e1ginas_salvar_em_arquivo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_2_cruzeiro_brasil_portugu\u00eas_formatado_no_terminal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L198", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_3_f\u00f3rmula_1_inglaterra_ingl\u00eas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_pr\u00e1ticos_de_uso", "target": "$graphify-root$_readme_4_filtragem_com_jq_em_modo_silencioso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L208", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_vis\u00e3o_geral_e_tr\u00edplice_extra\u00e7\u00e3o", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_argumentos_e_flags_cli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_readme_3_extrator_e_parser_multimotor_de_artigos", "target": "$graphify-root$_readme_exemplos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L238", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_1_extra\u00e7\u00e3o_completa_autom\u00e1tica", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_2_amostragem_r\u00e1pida_limit_2_not\u00edcias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_readme_exemplos_de_uso", "target": "$graphify-root$_readme_3_destino_customizado_e_timeout_ajustado", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_estrutura_do_projeto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_testes_e_qualidade_de_c\u00f3digo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L287", "weight": 1.0}, {"source": "$graphify-root$_readme_textnlpclassifierapp", "target": "$graphify-root$_readme_licen\u00e7a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L308", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d3323e05dd21f20686d9293f767ebb2ced206c7b74e7ca89d2ac02c0a4e31282.json b/graphify-out/cache/ast/v0.9.47-s2/d3323e05dd21f20686d9293f767ebb2ced206c7b74e7ca89d2ac02c0a4e31282.json new file mode 100644 index 0000000..a875221 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d3323e05dd21f20686d9293f767ebb2ced206c7b74e7ca89d2ac02c0a4e31282.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_classifier_py", "label": "test_classifier.py", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_classifier.py"}, {"id": "$graphify-root$_tests_test_classifier_petrobras_ecp", "label": "petrobras_ecp()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_test_direct_inherent", "label": "test_direct_inherent()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L33", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_test_contextual_inherent", "label": "test_contextual_inherent()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L49", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_test_tangential_inherent", "label": "test_tangential_inherent()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_test_not_related", "label": "test_not_related()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_test_negative_anchor_suppression", "label": "test_negative_anchor_suppression()", "file_type": "code", "source_file": "tests/test_classifier.py", "source_location": "L91", "_callable": true}, {"id": "$graphify-root$_tests_test_classifier_rationale_1", "label": "Unit tests for deterministic classification decision logic.", "file_type": "rationale", "source_file": "tests/test_classifier.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_classifier_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "src_classifier", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_petrobras_ecp", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L9", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_petrobras_ecp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_test_direct_inherent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_test_contextual_inherent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_test_tangential_inherent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_test_not_related", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_py", "target": "$graphify-root$_tests_test_classifier_test_negative_anchor_suppression", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_classifier_rationale_1", "target": "$graphify-root$_tests_test_classifier_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_classifier.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_classifier_petrobras_ecp", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_petrobras_ecp", "callee": "RelatedEntity", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_direct_inherent", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_direct_inherent", "callee": "classify", "is_member_call": true, "source_file": "tests/test_classifier.py", "source_location": "L40", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_contextual_inherent", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_contextual_inherent", "callee": "classify", "is_member_call": true, "source_file": "tests/test_classifier.py", "source_location": "L56", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_tangential_inherent", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_tangential_inherent", "callee": "classify", "is_member_call": true, "source_file": "tests/test_classifier.py", "source_location": "L71", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_not_related", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L79", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_not_related", "callee": "classify", "is_member_call": true, "source_file": "tests/test_classifier.py", "source_location": "L85", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_negative_anchor_suppression", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_classifier.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_classifier_test_negative_anchor_suppression", "callee": "classify", "is_member_call": true, "source_file": "tests/test_classifier.py", "source_location": "L97", "receiver": "classifier"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/d890fd0c6be9bb68eeb459e8a89ed988c075978cc220d923a8b81714563db177.json b/graphify-out/cache/ast/v0.9.47-s2/d890fd0c6be9bb68eeb459e8a89ed988c075978cc220d923a8b81714563db177.json new file mode 100644 index 0000000..47f3713 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/d890fd0c6be9bb68eeb459e8a89ed988c075978cc220d923a8b81714563db177.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_classifier_py", "label": "classifier.py", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L1"}, {"id": "$graphify-root$_src_classifier_match_phrase_in_text", "label": "match_phrase_in_text()", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L17", "_callable": true}, {"id": "$graphify-root$_src_classifier_count_phrase_occurrences", "label": "count_phrase_occurrences()", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L30", "_callable": true}, {"id": "$graphify-root$_src_classifier_inherenceclassifier", "label": "InherenceClassifier", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L41", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_classifier_inherenceclassifier_init", "label": ".__init__()", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_src_classifier_inherenceclassifier_classify", "label": ".classify()", "file_type": "code", "source_file": "src/classifier.py", "source_location": "L60", "_callable": true}, {"id": "ecpsnapshot", "label": "ECPSnapshot", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/classifier.py"}, {"id": "classificationresult", "label": "ClassificationResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/classifier.py"}, {"id": "$graphify-root$_src_classifier_rationale_1", "label": "Core deterministic classification engine (Tier 1 core).", "file_type": "rationale", "source_file": "src/classifier.py", "source_location": "L1"}, {"id": "$graphify-root$_src_classifier_rationale_18", "label": "Check if a normalized phrase appears in normalized text with word boundary\u2026", "file_type": "rationale", "source_file": "src/classifier.py", "source_location": "L18"}, {"id": "$graphify-root$_src_classifier_rationale_31", "label": "Count occurrences of a phrase in text.", "file_type": "rationale", "source_file": "src/classifier.py", "source_location": "L31"}, {"id": "$graphify-root$_src_classifier_rationale_42", "label": "Tier 1 Deterministic NLP Entity Inherence Classifier.", "file_type": "rationale", "source_file": "src/classifier.py", "source_location": "L42"}, {"id": "$graphify-root$_src_classifier_rationale_61", "label": "Classify inherence of content against an ECP snapshot.", "file_type": "rationale", "source_file": "src/classifier.py", "source_location": "L61"}], "edges": [{"source": "$graphify-root$_src_classifier_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "src_language", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "src_parser", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "$graphify-root$_src_classifier_match_phrase_in_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "$graphify-root$_src_classifier_count_phrase_occurrences", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_py", "target": "$graphify-root$_src_classifier_inherenceclassifier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier", "target": "$graphify-root$_src_classifier_inherenceclassifier_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier", "target": "$graphify-root$_src_classifier_inherenceclassifier_classify", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier_classify", "target": "ecpsnapshot", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier_classify", "target": "classificationresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier_classify", "target": "$graphify-root$_src_classifier_count_phrase_occurrences", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier_classify", "target": "$graphify-root$_src_classifier_match_phrase_in_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_inherenceclassifier_classify", "target": "classificationresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_rationale_1", "target": "$graphify-root$_src_classifier_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_rationale_18", "target": "$graphify-root$_src_classifier_match_phrase_in_text", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_rationale_31", "target": "$graphify-root$_src_classifier_count_phrase_occurrences", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_rationale_42", "target": "$graphify-root$_src_classifier_inherenceclassifier", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_src_classifier_rationale_61", "target": "$graphify-root$_src_classifier_inherenceclassifier_classify", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/classifier.py", "source_location": "L61", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_classifier_match_phrase_in_text", "callee": "normalize_text", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_match_phrase_in_text", "callee": "escape", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L26", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_classifier_match_phrase_in_text", "callee": "search", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L27", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_classifier_count_phrase_occurrences", "callee": "normalize_text", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_count_phrase_occurrences", "callee": "escape", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L37", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_classifier_count_phrase_occurrences", "callee": "findall", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L38", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_init", "callee": "LocalEmbeddingsAdapter", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_init", "callee": "LLMFallbackAdapter", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "strip", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L62", "receiver": "content_md"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "ValueError", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L63", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "detect_language", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "strip_markdown", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "normalize_text", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "normalize_text", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "add", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L80", "receiver": "seen_norm_terms"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L83", "receiver": "matched_target_terms"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L90", "receiver": "matched_anchors"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L96", "receiver": "matched_negative_anchors"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/classifier.py", "source_location": "L102"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L103", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L104", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L105", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L106", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L107", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "get", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L108", "receiver": "rel"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L124", "receiver": "matched_graph_entities"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L174", "receiver": "warnings"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "append", "is_member_call": true, "source_file": "src/classifier.py", "source_location": "L199", "receiver": "warnings"}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "extract_evidence_snippets", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L223", "receiver": null}, {"caller_nid": "$graphify-root$_src_classifier_inherenceclassifier_classify", "callee": "extract_evidence_snippets", "is_member_call": false, "source_file": "src/classifier.py", "source_location": "L225", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/dcff19204ab04403030b2339663c0d3c161744f50a53f5254c459a894eb3b3c8.json b/graphify-out/cache/ast/v0.9.47-s2/dcff19204ab04403030b2339663c0d3c161744f50a53f5254c459a894eb3b3c8.json new file mode 100644 index 0000000..e0ca48d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/dcff19204ab04403030b2339663c0d3c161744f50a53f5254c459a894eb3b3c8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_md", "label": "googlenews_extractor_guia_completo.md", "file_type": "document", "node_kind": "page", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "label": "Extrator de Not\u00edcias do Google News \u2014 Guia Completo de Funcionamento", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "label": "1. Vis\u00e3o geral (arquitetura)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L9"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "label": "2. Entrada", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L56"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "label": "2.1 DTO de entrada (`googlenews_etl/application/dtos/extract_news_dto.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L58"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "label": "2.2 Value Object de valida\u00e7\u00e3o (`googlenews_etl/domain/entities/search_query.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L77"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "label": "3. Processamento \u2014 passo a passo", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L117"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "label": "3.1 O caso de uso (`googlenews_etl/application/use_cases/extract_news_use_case.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L119"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "label": "3.2 A porta (`googlenews_etl/domain/ports/news_extractor_port.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L173"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "label": "3.3 O adaptador concreto \u2014 o cora\u00e7\u00e3o do extrator (`googlenews_etl/infrastructure/adapters/google_news_extractor_adapter.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L188"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "label": "3.3.1 Inicializa\u00e7\u00e3o: sess\u00e3o HTTP com impersona\u00e7\u00e3o de browser", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L190"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "label": "3.3.2 Mapeamento idioma \u2192 par\u00e2metros `hl`/`gl` (`_get_hl_gl`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L220"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "label": "3.3.3 \u2605 Extra\u00e7\u00e3o do RSS \u2014 o ponto fundamental (`_fetch_rss`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L257"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "label": "3.3.4 Orquestra\u00e7\u00e3o com resolu\u00e7\u00e3o de URLs (`extract`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L313"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "label": "3.4 Resolu\u00e7\u00e3o de URLs (`googlenews_etl/infrastructure/adapters/playwright_url_resolver_adapter.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L339"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "label": "3.5 Rate limiter (`googlenews_etl/domain/services/rate_limiter_service.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L395"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "label": "4. Entidade de dom\u00ednio da not\u00edcia (`googlenews_etl/domain/entities/news_article.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L414"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "label": "5. Sa\u00edda", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L446"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "label": "5.1 DTOs de sa\u00edda (`googlenews_etl/application/dtos/extract_news_dto.py`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L448"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "label": "5.2 Exemplo de sa\u00edda JSON", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L472"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "label": "6. Resumo do fluxo completo (entrada \u2192 sa\u00edda)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L497"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "label": "7. Depend\u00eancias para rodar (o que N\u00c3O est\u00e1 nos 4 arquivos centrais)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L525"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "label": "Depend\u00eancias de bibliotecas (requirements)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L540"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "label": "Comportamentos observ\u00e1veis (honestidade)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L548"}, {"id": "$graphify-root$_docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "label": "8. Como chamar (exemplo de uso)", "file_type": "document", "node_kind": "heading", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L559"}], "edges": [{"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_md", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_1_vis\u00e3o_geral_arquitetura", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_1_dto_de_entrada_googlenews_etl_application_dtos_extract_news_dto_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_entrada", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_2_2_value_object_de_valida\u00e7\u00e3o_googlenews_etl_domain_entities_search_query_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_1_o_caso_de_uso_googlenews_etl_application_use_cases_extract_news_use_case_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_2_a_porta_googlenews_etl_domain_ports_news_extractor_port_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_1_inicializa\u00e7\u00e3o_sess\u00e3o_http_com_impersona\u00e7\u00e3o_de_browser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_2_mapeamento_idioma_par\u00e2metros_hl_gl_get_hl_gl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_3_extra\u00e7\u00e3o_do_rss_o_ponto_fundamental_fetch_rss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_o_adaptador_concreto_o_cora\u00e7\u00e3o_do_extrator_googlenews_etl_infrastructure_adapters_google_news_extractor_adapter_py", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_3_4_orquestra\u00e7\u00e3o_com_resolu\u00e7\u00e3o_de_urls_extract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_4_resolu\u00e7\u00e3o_de_urls_googlenews_etl_infrastructure_adapters_playwright_url_resolver_adapter_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_processamento_passo_a_passo", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_3_5_rate_limiter_googlenews_etl_domain_services_rate_limiter_service_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_4_entidade_de_dom\u00ednio_da_not\u00edcia_googlenews_etl_domain_entities_news_article_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L414", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L446", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_1_dtos_de_sa\u00edda_googlenews_etl_application_dtos_extract_news_dto_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L448", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_sa\u00edda", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_5_2_exemplo_de_sa\u00edda_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_6_resumo_do_fluxo_completo_entrada_sa\u00edda", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L497", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L525", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_depend\u00eancias_de_bibliotecas_requirements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L540", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_7_depend\u00eancias_para_rodar_o_que_n\u00e3o_est\u00e1_nos_4_arquivos_centrais", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_comportamentos_observ\u00e1veis_honestidade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L548", "weight": 1.0}, {"source": "$graphify-root$_docs_googlenews_extractor_guia_completo_extrator_de_not\u00edcias_do_google_news_guia_completo_de_funcionamento", "target": "$graphify-root$_docs_googlenews_extractor_guia_completo_8_como_chamar_exemplo_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/googlenews_extractor_guia_completo.md", "source_location": "L559", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/e10035c73584efc6d043bec17d43388ecbf25b576ca3475d0b9906cbc16fad90.json b/graphify-out/cache/ast/v0.9.47-s2/e10035c73584efc6d043bec17d43388ecbf25b576ca3475d0b9906cbc16fad90.json new file mode 100644 index 0000000..dfeaf5c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/e10035c73584efc6d043bec17d43388ecbf25b576ca3475d0b9906cbc16fad90.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_md", "label": "prd_extrator_artigos_nlp.md", "file_type": "document", "node_kind": "page", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "label": "PRD \u2014 Extrator e Parser de Artigos Multimotor (Foxcape + Trafilatura + Newspaper4k + Readability)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L1"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", "label": "1. Vis\u00e3o Geral e Contexto", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L11"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_1_1_objetivo_do_produto", "label": "1.1 Objetivo do Produto", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L13"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_2_personas_e_casos_de_uso", "label": "2. Personas e Casos de Uso", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L25"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_3_arquitetura_e_fluxo_do_sistema", "label": "3. Arquitetura e Fluxo do Sistema", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L35"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "label": "4. Requisitos Funcionais (FR)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L58"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf01_ingest\u00e3o_de_arquivo_json_de_not\u00edcias", "label": "RF01 \u2014 Ingest\u00e3o de Arquivo JSON de Not\u00edcias", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L60"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf02_navega\u00e7\u00e3o_e_coleta_com_foxcape_obrigat\u00f3rio", "label": "RF02 \u2014 Navega\u00e7\u00e3o e Coleta com Foxcape (Obrigat\u00f3rio)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L65"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf03_extra\u00e7\u00e3o_m\u00e1xima_com_trafilatura", "label": "RF03 \u2014 Extra\u00e7\u00e3o M\u00e1xima com Trafilatura", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L71"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf04_extra\u00e7\u00e3o_m\u00e1xima_com_newspaper4k", "label": "RF04 \u2014 Extra\u00e7\u00e3o M\u00e1xima com Newspaper4k", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L84"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf05_extra\u00e7\u00e3o_com_readability_readability_lxml", "label": "RF05 \u2014 Extra\u00e7\u00e3o com Readability (`readability-lxml`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L96"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf06_consolida\u00e7\u00e3o_e_exporta\u00e7\u00e3o_de_resultados", "label": "RF06 \u2014 Consolida\u00e7\u00e3o e Exporta\u00e7\u00e3o de Resultados", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L103"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf07_interface_de_linha_de_comando_cli_e_logs_em_tempo_real", "label": "RF07 \u2014 Interface de Linha de Comando (CLI) e Logs em Tempo Real", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L114"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf08_toler\u00e2ncia_a_falhas_e_resili\u00eancia", "label": "RF08 \u2014 Toler\u00e2ncia a Falhas e Resili\u00eancia", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L132"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_5_requisitos_n\u00e3o_funcionais_nfr", "label": "5. Requisitos N\u00e3o Funcionais (NFR)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L138"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", "label": "6. Esquema de Dados (Contratos de Interface)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L150"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_1_esquema_do_json_de_entrada_input", "label": "6.1 Esquema do JSON de Entrada (`Input`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L152"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_2_esquema_do_json_consolidado_de_sa\u00edda_output", "label": "6.2 Esquema do JSON Consolidado de Sa\u00edda (`Output`)", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L173"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_7_depend\u00eancias_do_projeto", "label": "7. Depend\u00eancias do Projeto", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L230"}, {"id": "$graphify-root$_docs_prd_extrator_artigos_nlp_8_crit\u00e9rios_de_aceite", "label": "8. Crit\u00e9rios de Aceite", "file_type": "document", "node_kind": "heading", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L246"}], "edges": [{"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_md", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_1_vis\u00e3o_geral_e_contexto", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_1_1_objetivo_do_produto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_2_personas_e_casos_de_uso", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_3_arquitetura_e_fluxo_do_sistema", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf01_ingest\u00e3o_de_arquivo_json_de_not\u00edcias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf02_navega\u00e7\u00e3o_e_coleta_com_foxcape_obrigat\u00f3rio", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf03_extra\u00e7\u00e3o_m\u00e1xima_com_trafilatura", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf04_extra\u00e7\u00e3o_m\u00e1xima_com_newspaper4k", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf05_extra\u00e7\u00e3o_com_readability_readability_lxml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf06_consolida\u00e7\u00e3o_e_exporta\u00e7\u00e3o_de_resultados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf07_interface_de_linha_de_comando_cli_e_logs_em_tempo_real", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_4_requisitos_funcionais_fr", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_rf08_toler\u00e2ncia_a_falhas_e_resili\u00eancia", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_5_requisitos_n\u00e3o_funcionais_nfr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_1_esquema_do_json_de_entrada_input", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_esquema_de_dados_contratos_de_interface", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_6_2_esquema_do_json_consolidado_de_sa\u00edda_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_7_depend\u00eancias_do_projeto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L230", "weight": 1.0}, {"source": "$graphify-root$_docs_prd_extrator_artigos_nlp_prd_extrator_e_parser_de_artigos_multimotor_foxcape_trafilatura_newspaper4k_readability", "target": "$graphify-root$_docs_prd_extrator_artigos_nlp_8_crit\u00e9rios_de_aceite", "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/prd_extrator_artigos_nlp.md", "source_location": "L246", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.47-s2/eecd6b0ba7ea78b30958ff463e6ef0e60d664a6b6bd3ca6ea05388cb9983ee80.json b/graphify-out/cache/ast/v0.9.47-s2/eecd6b0ba7ea78b30958ff463e6ef0e60d664a6b6bd3ca6ea05388cb9983ee80.json new file mode 100644 index 0000000..7912166 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.47-s2/eecd6b0ba7ea78b30958ff463e6ef0e60d664a6b6bd3ca6ea05388cb9983ee80.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_plan_md", "label": "plan.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "label": "Implementation Plan: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "label": "Summary", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "label": "Technical Context", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "label": "Constitution Check", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "label": "Project Structure", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "label": "Source Code Layout", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "label": "Implementation Phases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "label": "Phase 0: Outline & Research *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "label": "Phase 1: Design & Contracts *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_next_speckit_tasks", "label": "Phase 2: Tasks & Execution *(Next: `/speckit-tasks`)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_plan_md", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_next_speckit_tasks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json index 5821781..1ba2269 100644 --- a/graphify-out/cache/stat-index.json +++ b/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{".agents/skills/graphify/SKILL.md":{"size":41276,"mtime_ns":1787189375574389900,"indexed_at_ns":1787189383574665500,"word_count":5211,"hashes":{".agents/skills/graphify/skill.md":"3f0ba089a04e342e4337913a03515905fe205f57914b53b8eb1ff59dc926a4ea"}},".agents/skills/graphify/references/add-watch.md":{"size":2486,"mtime_ns":1787176247108301100,"indexed_at_ns":1787189352249948700,"word_count":366,"hashes":{".agents/skills/graphify/references/add-watch.md":"bc4c3ac2e736e36fff3e120b2a7967f1f049c6b05ca39db50606b4bb83c768f7"}},".agents/skills/graphify/references/exports.md":{"size":3362,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352252005200,"word_count":470,"hashes":{".agents/skills/graphify/references/exports.md":"81b09c0ad09d54d52b68755c32544024e290c02f53bdeb283b1b76d7eebc2445"}},".agents/skills/graphify/references/extraction-spec.md":{"size":7960,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352254091000,"word_count":1038,"hashes":{".agents/skills/graphify/references/extraction-spec.md":"d07c5b2e8224b1006b1a336f77d0af22f637fe8d20166895bf852c32324d851b"}},".agents/skills/graphify/references/github-and-merge.md":{"size":2177,"mtime_ns":1787176247111831300,"indexed_at_ns":1787189352255826900,"word_count":271,"hashes":{".agents/skills/graphify/references/github-and-merge.md":"189cf7c8c51988d23f6ad25dff96855ce0e7336bffa352dedb3867954e702f7b"}},".agents/skills/graphify/references/hooks.md":{"size":1267,"mtime_ns":1787176247112843500,"indexed_at_ns":1787189352257586300,"word_count":193,"hashes":{".agents/skills/graphify/references/hooks.md":"3e7d2df361e7059e921192b1693cc7859e4a2b0474446f8352be5a4624790eaa"}},".agents/skills/graphify/references/query.md":{"size":13456,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352259619700,"word_count":1763,"hashes":{".agents/skills/graphify/references/query.md":"151ad7ed0ee4aefe411f026261f605a61134cc6247324fe8df3ae1e785321283"}},".agents/skills/graphify/references/transcribe.md":{"size":3173,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352261502100,"word_count":418,"hashes":{".agents/skills/graphify/references/transcribe.md":"cbbbae90e451d722b39df0df7bc267bb9b7ecb3dd8a9e8be4b40237df053c8d6"}},".agents/skills/graphify/references/update.md":{"size":10425,"mtime_ns":1787176247115420200,"indexed_at_ns":1787189352263334600,"word_count":1196,"hashes":{".agents/skills/graphify/references/update.md":"b209dbb3bb5466e601a530b65925c55c34f040ffcf56d38ea64be9aaf75f92ce"}},".agents/skills/ponytail-audit/SKILL.md":{"size":1693,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325036907200,"word_count":234,"hashes":{".agents/skills/ponytail-audit/skill.md":"b29dd08e26692c4bdd87b024d43820e2b45527984d9b3330b5fcfc78491aac52"}},".agents/skills/ponytail-debt/SKILL.md":{"size":1747,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325037560500,"word_count":261,"hashes":{".agents/skills/ponytail-debt/skill.md":"4b8e8de454f0d7d46bce20b3f4b4ea4c5a1eb60691c0d8bef27ef4ded155e4bc"}},".agents/skills/ponytail-gain/SKILL.md":{"size":2023,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038161300,"word_count":246,"hashes":{".agents/skills/ponytail-gain/skill.md":"9e15d99db7452555dae0cc55e5c37799e1dc8acaed4eb89c0e9641d3afbb9646"}},".agents/skills/ponytail-help/SKILL.md":{"size":2867,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038779900,"word_count":379,"hashes":{".agents/skills/ponytail-help/skill.md":"4b6ba4d12d19068c08b12af63c05b0acc9ce3beed06654065450c0cd6042d9db"}},".agents/skills/ponytail-review/SKILL.md":{"size":2440,"mtime_ns":1786995804155238700,"indexed_at_ns":1787189325039426100,"word_count":339,"hashes":{".agents/skills/ponytail-review/skill.md":"694090b91438cff578931361d36947da438722dd1f9f7460022bb3aa5b18b4de"}},".agents/skills/ponytail/SKILL.md":{"size":6757,"mtime_ns":1786995804156239700,"indexed_at_ns":1787189325040071200,"word_count":1079,"hashes":{".agents/skills/ponytail/skill.md":"64fc6e81a1b2b008fd72f5c9686498e53383e9cb25d518dc81305799e985bf6f"}},".agents/skills/speckit-analyze/SKILL.md":{"size":11642,"mtime_ns":1787189272133064100,"indexed_at_ns":1787189325040713600,"word_count":1569,"hashes":{".agents/skills/speckit-analyze/skill.md":"12f78b5b87a05d7075320de7e7df0fc3890ee915bf5203ef2c397fee48b0d04e"}},".agents/skills/speckit-checklist/SKILL.md":{"size":22277,"mtime_ns":1787189272160379600,"indexed_at_ns":1787189325041377200,"word_count":2981,"hashes":{".agents/skills/speckit-checklist/skill.md":"1b9b592206c499d1c46699ea99fd3795ec31638e3968aa90054d07bff9f26852"}},".agents/skills/speckit-clarify/SKILL.md":{"size":19212,"mtime_ns":1787189272137533000,"indexed_at_ns":1787189325042095600,"word_count":2688,"hashes":{".agents/skills/speckit-clarify/skill.md":"d091faedcb83b3f11a3049a84424f5d66b6bdf181b192a8167c07b94133e617d"}},".agents/skills/speckit-constitution/SKILL.md":{"size":9959,"mtime_ns":1787189272141381400,"indexed_at_ns":1787189325042781900,"word_count":1376,"hashes":{".agents/skills/speckit-constitution/skill.md":"791892a3d87f7bd6ea936f896c5050b183942489d68bfb383c2ba4de8380a901"}},".agents/skills/speckit-converge/SKILL.md":{"size":12639,"mtime_ns":1787189272150381400,"indexed_at_ns":1787189325043428600,"word_count":1798,"hashes":{".agents/skills/speckit-converge/skill.md":"c04c22c94ac9a47d73d547636127b06f38647627a4dbfbc36ae50dd0a95971b3"}},".agents/skills/speckit-implement/SKILL.md":{"size":12703,"mtime_ns":1787189272146373000,"indexed_at_ns":1787189325044057400,"word_count":1691,"hashes":{".agents/skills/speckit-implement/skill.md":"a779bc551abfa24d77556554b4cc0225b3c57bc436956b9cb9aafe306c581945"}},".agents/skills/speckit-plan/SKILL.md":{"size":7857,"mtime_ns":1787189272154380100,"indexed_at_ns":1787189325044689700,"word_count":1083,"hashes":{".agents/skills/speckit-plan/skill.md":"74b5f950130fa658b857d1c81ac052d89277cbe9901c51f01270963c746277b6"}},".agents/skills/speckit-specify/SKILL.md":{"size":18258,"mtime_ns":1787189272165381000,"indexed_at_ns":1787189325045384300,"word_count":2452,"hashes":{".agents/skills/speckit-specify/skill.md":"b86e839509339a9e11a605b6db50fcd3a435511d5cbe1bbbf4f473ac4bdd5447"}},".agents/skills/speckit-tasks/SKILL.md":{"size":10978,"mtime_ns":1787189272169379600,"indexed_at_ns":1787189325046041900,"word_count":1581,"hashes":{".agents/skills/speckit-tasks/skill.md":"69de6853783574ace13eadf7c706a610df2f2584901974b713a51c1576e53339"}},".agents/skills/speckit-taskstoissues/SKILL.md":{"size":7686,"mtime_ns":1787189272172364900,"indexed_at_ns":1787189325046665600,"word_count":1153,"hashes":{".agents/skills/speckit-taskstoissues/skill.md":"fc53c7413cf050b143775a1aeca2773eabb248782a58d599b52d0d232c6c05fd"}},".specify/init-options.json":{"size":174,"mtime_ns":1787189272252382200,"indexed_at_ns":1787189325022221000,"word_count":16,"hashes":{".specify/init-options.json":"b39c8c1030871841dded0aede892fe2d25b36883333777cbab7d7c1c67b36f87"}},".specify/integration.json":{"size":279,"mtime_ns":1787189272181379700,"indexed_at_ns":1787189325023926100,"word_count":24,"hashes":{".specify/integration.json":"d7545650420a2ed3fd6878ad7006b8de79f5e812dd6352c0d86d530db3a12134"}},".specify/integrations/agy.manifest.json":{"size":1299,"mtime_ns":1787189272178366200,"indexed_at_ns":1787189325024675000,"word_count":31,"hashes":{".specify/integrations/agy.manifest.json":"504c42820b8e37a7eb26b328881026982f3a6a71fa16de670c425b35b37f00e4"}},".specify/integrations/speckit.manifest.json":{"size":1536,"mtime_ns":1787189272238379600,"indexed_at_ns":1787189325025369900,"word_count":35,"hashes":{".specify/integrations/speckit.manifest.json":"cc15502df7b241b7ef08785a613f642d69dc561b8b5db2ccba121fcb6d2c1680"}},".specify/memory/.constitution-template.json":{"size":103,"mtime_ns":1787189272257369800,"indexed_at_ns":1787189325026009300,"word_count":6,"hashes":{".specify/memory/.constitution-template.json":"a0f4bf5e5399e118b61e8bae9404743316cea6d0fff4270d8758aeb55525b988"}},".specify/memory/constitution.md":{"size":2346,"mtime_ns":1787189272254379900,"indexed_at_ns":1787189325047314000,"word_count":272,"hashes":{".specify/memory/constitution.md":"51f14d46d5b6abddce28779396666792636c8d9629f0202e84501a5e759267ab"}},".specify/scripts/powershell/check-prerequisites.ps1":{"size":6122,"mtime_ns":1787189272202379800,"indexed_at_ns":1787189325026668000,"word_count":685,"hashes":{".specify/scripts/powershell/check-prerequisites.ps1":"80f1c4dc6817140dea987bb5727d38be754679c7052f1d9a088031536423cb23"}},".specify/scripts/powershell/common.ps1":{"size":34245,"mtime_ns":1787189272206379800,"indexed_at_ns":1787189325027347800,"word_count":3419,"hashes":{".specify/scripts/powershell/common.ps1":"63b253c967802e85ab12e76ac716eca4bb164dde2b9324e08e406d848ec4104b"}},".specify/scripts/powershell/create-new-feature.ps1":{"size":13026,"mtime_ns":1787189272211369000,"indexed_at_ns":1787189325028005300,"word_count":1421,"hashes":{".specify/scripts/powershell/create-new-feature.ps1":"7b4eb36a1fbbbe9a449b5f99de1055b1aad88e775eeb0db3f86e4ff013e6ddd1"}},".specify/scripts/powershell/resolve-template.ps1":{"size":889,"mtime_ns":1787189272214379900,"indexed_at_ns":1787189325028621300,"word_count":86,"hashes":{".specify/scripts/powershell/resolve-template.ps1":"78234a87c584e697a8fda8b18f134914e41465cbb67c1608b81e69860741502c"}},".specify/scripts/powershell/setup-plan.ps1":{"size":2927,"mtime_ns":1787189272218379500,"indexed_at_ns":1787189325029271700,"word_count":325,"hashes":{".specify/scripts/powershell/setup-plan.ps1":"4d5b636734ae78061da3a7675f0af4acfa6b65f7d994d5372c8c051f25bb8966"}},".specify/scripts/powershell/setup-tasks.ps1":{"size":3892,"mtime_ns":1787189272221379900,"indexed_at_ns":1787189325029900900,"word_count":429,"hashes":{".specify/scripts/powershell/setup-tasks.ps1":"5c980d1a41d186b634bc350128c31e5f3074099b996989c0a0d95b22623b2932"}},".specify/templates/checklist-template.md":{"size":2033,"mtime_ns":1787189272223379700,"indexed_at_ns":1787189325047907900,"word_count":271,"hashes":{".specify/templates/checklist-template.md":"6fb0a979b8534e1b3343d1ce6e45f84d32b118e096620bfdeed241dbc1a1da8a"}},".specify/templates/constitution-template.md":{"size":2346,"mtime_ns":1787189272226379800,"indexed_at_ns":1787189325048534600,"word_count":272,"hashes":{".specify/templates/constitution-template.md":"ae22b7c7ecb6ccd516fed25916e465146432c58f1bef904a92b535ac0bbecfcf"}},".specify/templates/plan-template.md":{"size":3682,"mtime_ns":1787189272229368600,"indexed_at_ns":1787189325049160100,"word_count":463,"hashes":{".specify/templates/plan-template.md":"e5cfe5097c5de0add0f0de02b7a5d2cd2470c9a2f24c0e6e15439d274e12abe0"}},".specify/templates/spec-template.md":{"size":4556,"mtime_ns":1787189272231368600,"indexed_at_ns":1787189325049780800,"word_count":629,"hashes":{".specify/templates/spec-template.md":"2734a509d4b2f34ee6258475c4fb2e80a6dbfcbc47c8552df5b6278907529250"}},".specify/templates/tasks-template.md":{"size":9171,"mtime_ns":1787189272234379700,"indexed_at_ns":1787189325050369300,"word_count":1384,"hashes":{".specify/templates/tasks-template.md":"070ed0dfafd8310a243b51cc30b1b6dfb19883fdd5ad20e4b53e45eb7f939e3e"}},".specify/workflows/speckit/workflow.yml":{"size":2216,"mtime_ns":1787160407462626700,"indexed_at_ns":1787189324996696100,"word_count":276},".specify/workflows/workflow-registry.json":{"size":381,"mtime_ns":1787189272250379800,"indexed_at_ns":1787189325030509700,"word_count":34,"hashes":{".specify/workflows/workflow-registry.json":"2c5bf7f4ba03ddf54945cd64d4740301036c18ebea47448d93ff428c771eff3d"}},".agents/rules/graphify.md":{"size":947,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352246818600,"word_count":127,"hashes":{".agents/rules/graphify.md":"e55792958648fb69255e3ce3f71a8fcead36307c34b2d67feda9ac650ac61803"}},".agents/workflows/graphify.md":{"size":239,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352301037700,"word_count":37,"hashes":{".agents/workflows/graphify.md":"d92622463299d313da48e2cdbebf79d7ea24ffaf2ae2de2a1714be8ee42b22b3"}},"specs/001-multilingual-entity-classifier/checklists/requirements.md":{"size":1897,"mtime_ns":1787193985655018100,"indexed_at_ns":1787194002726038300,"word_count":258,"hashes":{"specs/001-multilingual-entity-classifier/checklists/requirements.md":"277036c8add1bae5eeae6da5595cf66405670d33f9d4842784b1c5581cef62d0"}},"specs/001-multilingual-entity-classifier/spec.md":{"size":10753,"mtime_ns":1787194850510689300,"indexed_at_ns":1787194930726970700,"word_count":1423,"hashes":{"specs/001-multilingual-entity-classifier/spec.md":"f136d1d2e6a539072ea238be9d0e918dbc32eb89555ffd37e9b84579064e7799"}},"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":{"size":1808,"mtime_ns":1787194605824187100,"indexed_at_ns":1787194638410863000,"word_count":281,"hashes":{"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":"894670a7228b93a2202203ac532aa0d415bd1921272b61a8d07e951a417bc75c"}},"specs/001-multilingual-entity-classifier/data-model.md":{"size":5137,"mtime_ns":1787194591677816000,"indexed_at_ns":1787194638411601100,"word_count":524,"hashes":{"specs/001-multilingual-entity-classifier/data-model.md":"89ecf2e55508b53ba208d011a76868294f0ff3cab87a217e7ed73c19edfbd9f6"}},"specs/001-multilingual-entity-classifier/plan.md":{"size":6215,"mtime_ns":1787194897854106700,"indexed_at_ns":1787194930724386200,"word_count":782,"hashes":{"specs/001-multilingual-entity-classifier/plan.md":"d37d1c5f3bffc4dad289ad128024ab6dffb409b06f49e96fc5a2fd2a735472a5"}},"specs/001-multilingual-entity-classifier/quickstart.md":{"size":3235,"mtime_ns":1787194877439851000,"indexed_at_ns":1787194930725082000,"word_count":339,"hashes":{"specs/001-multilingual-entity-classifier/quickstart.md":"816060813a37d728ceed955aa829d7fa4f80862f0932133cd5293bdbfdbd40db"}},"specs/001-multilingual-entity-classifier/research.md":{"size":4059,"mtime_ns":1787194581004019000,"indexed_at_ns":1787194638413783100,"word_count":509,"hashes":{"specs/001-multilingual-entity-classifier/research.md":"d4b61795fb09da693ead647d4c05e8f44699c36e9f43b47e808e09a2f970d996"}},"specs/001-multilingual-entity-classifier/tasks.md":{"size":6951,"mtime_ns":1787196452595599000,"indexed_at_ns":1787196460266934400,"word_count":874,"hashes":{"specs/001-multilingual-entity-classifier/tasks.md":"7a33202595cf192baf702d3d8e169ea8db59ca0f2fecb471594f7f3c48417082"}},"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":{"size":4154,"mtime_ns":1787195218247525200,"indexed_at_ns":1787195224690016000,"word_count":546,"hashes":{"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":"6da9d16dcd60e927f892c69aa05945e99840b6dc824f93ea2686f12801e81a8a"}},"classify.py":{"size":6155,"mtime_ns":1787197110375362700,"indexed_at_ns":1787197157466076000,"word_count":484,"hashes":{"classify.py":"d139cd5f045a922bfca70c7c521498f0120a569e438d9864c2e508440977af29"}},"examples/content_northvolt_de.md":{"size":530,"mtime_ns":1787195963813740900,"indexed_at_ns":1787196460246681400,"word_count":57,"hashes":{"examples/content_northvolt_de.md":"5708f5dac050fea9c5e4fbdee40910cbb4c4be0efc9c3212f7cf2a7a034eb91d"}},"examples/content_presal_pt.md":{"size":506,"mtime_ns":1787195950024799800,"indexed_at_ns":1787196460247532700,"word_count":72,"hashes":{"examples/content_presal_pt.md":"ef8c7d61a4d721f7d702fa608274da920476be3a4f7bfe6e4f603abba12a133f"}},"examples/content_tangential_es.md":{"size":414,"mtime_ns":1787195975527150700,"indexed_at_ns":1787196460248387000,"word_count":60,"hashes":{"examples/content_tangential_es.md":"d02c405931b0752377a2ba10cbffe4d664713e33c3b6a8fbdd36b4a75b30f11b"}},"examples/ecp_apple.json":{"size":723,"mtime_ns":1787195969757856700,"indexed_at_ns":1787196460143672700,"word_count":68,"hashes":{"examples/ecp_apple.json":"166fb76e5d0d181835dd636450b6828565c2baafcb21228313bcea3c850d9a92"}},"examples/ecp_petrobras.json":{"size":714,"mtime_ns":1787195944394575600,"indexed_at_ns":1787196460144504800,"word_count":62,"hashes":{"examples/ecp_petrobras.json":"5dd24cf4d5cb9f636f3a1c2511eeaa152be0511b80974a4f36d5d68aded046db"}},"examples/ecp_volkswagen.json":{"size":720,"mtime_ns":1787195955456870500,"indexed_at_ns":1787196460145217300,"word_count":56,"hashes":{"examples/ecp_volkswagen.json":"3d3866179c67e332ad5aa46f5d15eeb4de3fa829d1cc21ccf73cc7f3a7eb32c5"}},"pyproject.toml":{"size":546,"mtime_ns":1787234982768605000,"indexed_at_ns":1787235018162790500,"word_count":59,"hashes":{"pyproject.toml":"632d56d622867a9d615eb5d3500864d3ad3b5a1dce14b006ada8c1fbcd6a744c"}},"requirements.txt":{"size":237,"mtime_ns":1787236111876247000,"indexed_at_ns":1787236259133529300,"word_count":25},"src/__init__.py":{"size":83,"mtime_ns":1787195832559486000,"indexed_at_ns":1787196460146819200,"word_count":9,"hashes":{"src/__init__.py":"81c4eae46f05fd529d4f81f2d318c2b4e3af282f140963e9c5c876690bb1ca74"}},"src/adapters/__init__.py":{"size":73,"mtime_ns":1787195842271676800,"indexed_at_ns":1787196460147577400,"word_count":9,"hashes":{"src/adapters/__init__.py":"f4dcecfaeea2ae0852fd9836bfb4f9b2a9bedd60057157064e6d3fed4a8c1bd7"}},"src/adapters/base.py":{"size":993,"mtime_ns":1787196396619994900,"indexed_at_ns":1787196460148332300,"word_count":103,"hashes":{"src/adapters/base.py":"9ac400ed397a6344d870d842eac4ba1dd388b95aa8178eb5c6761642948724e5"}},"src/adapters/embeddings.py":{"size":1421,"mtime_ns":1787196402748426100,"indexed_at_ns":1787196460149090900,"word_count":140,"hashes":{"src/adapters/embeddings.py":"88dfea4ba85c6d996d52eddd56d00cc625642c1ae4f371c80483c592ff77730e"}},"src/adapters/llm.py":{"size":1271,"mtime_ns":1787196408180450900,"indexed_at_ns":1787196460149934600,"word_count":136,"hashes":{"src/adapters/llm.py":"259e6ea0b5941f3d5c168775fad2d0fc2b47404b900a1c14f5b4c0ae74201a4a"}},"src/classifier.py":{"size":9632,"mtime_ns":1787197085025044700,"indexed_at_ns":1787197157479422500,"word_count":826,"hashes":{"src/classifier.py":"5b4fb6d6d36903918dda91c9be971ec0314cb2355c3814418f12b9e04a206796"}},"src/language.py":{"size":7515,"mtime_ns":1787196384554574400,"indexed_at_ns":1787196460151564300,"word_count":896,"hashes":{"src/language.py":"cea675866db47e33cdc2d0ae5817d96308d38024813ba4aafb410df92d38aab2"}},"src/models.py":{"size":5997,"mtime_ns":1787195855326628100,"indexed_at_ns":1787196460152268300,"word_count":491,"hashes":{"src/models.py":"06a87c0cfa02cedb689c3994d7dcfae40c0ef4c9d6c310880bf38675b7634c44"}},"src/parser.py":{"size":2679,"mtime_ns":1787195873911980500,"indexed_at_ns":1787196460152923000,"word_count":302,"hashes":{"src/parser.py":"9c09324ba1dac303bd3a9da944fcf6953cc932c0f3a3c4dd0bbf039a30682ec2"}},"tests/__init__.py":{"size":69,"mtime_ns":1787195847518641200,"indexed_at_ns":1787196460153585600,"word_count":8,"hashes":{"tests/__init__.py":"2acdae7d2696c23d5391ed343046cffa11b82f3f0d7d85767dacf0e762a955d1"}},"tests/fixtures/benchmark_24/de/contextual.md":{"size":144,"mtime_ns":1787196180779459400,"indexed_at_ns":1787196460268138600,"word_count":17,"hashes":{"tests/fixtures/benchmark_24/de/contextual.md":"b6a18c4bef2defe99773d3ba43137148d25b42ac27562b10b73ccdee1a49f203"}},"tests/fixtures/benchmark_24/de/contextual_expected.json":{"size":136,"mtime_ns":1787196187032823100,"indexed_at_ns":1787196460154321700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/contextual_expected.json":"cb741ed9bef3359a41d5c031ad213d4320c5b8fe3f8579e497ee9b1eda0ed478"}},"tests/fixtures/benchmark_24/de/direct.md":{"size":148,"mtime_ns":1787196169572812500,"indexed_at_ns":1787196460269192500,"word_count":16,"hashes":{"tests/fixtures/benchmark_24/de/direct.md":"67f375d26d8424655b76d5650c656b4af79b9964d52f2d24049e1f4de6545c9b"}},"tests/fixtures/benchmark_24/de/direct_expected.json":{"size":132,"mtime_ns":1787196175168070900,"indexed_at_ns":1787196460155004400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/direct_expected.json":"5301a39d31b365266b529ce9823145381241f8876af1ec21f0a9c27c9bdc80fa"}},"tests/fixtures/benchmark_24/de/ecp.json":{"size":579,"mtime_ns":1787196164027193900,"indexed_at_ns":1787196460155664300,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/de/ecp.json":"061fc3a9468d2baaaf2b3e8355d08d23261a9a7adc484cb06b45646eacba46fc"}},"tests/fixtures/benchmark_24/de/not_related.md":{"size":137,"mtime_ns":1787196204093781400,"indexed_at_ns":1787196460270056100,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/not_related.md":"4904b694b45a2058614a4e4350046eee042c4bbd7bcd6b88c56408ee3aebd81d"}},"tests/fixtures/benchmark_24/de/not_related_expected.json":{"size":129,"mtime_ns":1787196209729787600,"indexed_at_ns":1787196460156391600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/not_related_expected.json":"730fa882c1f3b8a7c0e2d3da9af55ee57ad7425a8b304c11f54e01899c740952"}},"tests/fixtures/benchmark_24/de/tangential.md":{"size":150,"mtime_ns":1787196193187087300,"indexed_at_ns":1787196460270857700,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/tangential.md":"8207068977006dafa7c9c4459bd996b5c124972d25f1015a589d3b06d0999613"}},"tests/fixtures/benchmark_24/de/tangential_expected.json":{"size":128,"mtime_ns":1787196198703847300,"indexed_at_ns":1787196460157130400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/tangential_expected.json":"82dea5e55d7586c4e7005755e3da4f44560238733094876047de51e854d41d92"}},"tests/fixtures/benchmark_24/en/contextual.md":{"size":148,"mtime_ns":1787196066427405900,"indexed_at_ns":1787196460271878300,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/en/contextual.md":"258a9f1ae01dae52955c1f45cb176e7d981a72ba869c33232c8c295f4816acc0"}},"tests/fixtures/benchmark_24/en/contextual_expected.json":{"size":136,"mtime_ns":1787196073211713100,"indexed_at_ns":1787196460158457500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/contextual_expected.json":"70605f9d8901d4c4b99d9fda1f30bc114cb0b65893579f77a1f9d50f62c1e3fc"}},"tests/fixtures/benchmark_24/en/direct.md":{"size":155,"mtime_ns":1787196054149613200,"indexed_at_ns":1787196460272766400,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/en/direct.md":"c7e0b093c386ccf19d9d7cbef4763dfb665213a7a245093af43529b1eaff8266"}},"tests/fixtures/benchmark_24/en/direct_expected.json":{"size":132,"mtime_ns":1787196059966736300,"indexed_at_ns":1787196460159526700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/direct_expected.json":"0b803b2ad37388be7ef4ea1d164db22c9fd784bcb9be6f56627d412f1f9299bc"}},"tests/fixtures/benchmark_24/en/ecp.json":{"size":594,"mtime_ns":1787197123717795600,"indexed_at_ns":1787197157494285900,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/en/ecp.json":"601423ac1e0b0e2bb7a0151ac87f5bdfd32450d90a022eaf9ef030338e0b4893"}},"tests/fixtures/benchmark_24/en/not_related.md":{"size":146,"mtime_ns":1787196350333465500,"indexed_at_ns":1787196460273595300,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/en/not_related.md":"2fa405b123733c5a9b5beba8c646b886b27e212cff55496a9fe7d6208ddfb11c"}},"tests/fixtures/benchmark_24/en/not_related_expected.json":{"size":129,"mtime_ns":1787196104521133100,"indexed_at_ns":1787196460161344300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/not_related_expected.json":"cb046b055b5c72d8146b6035a935211d60fb0b313ef819576bb8e7048d55f468"}},"tests/fixtures/benchmark_24/en/tangential.md":{"size":147,"mtime_ns":1787196082730266300,"indexed_at_ns":1787196460274648200,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/en/tangential.md":"793acebc11e5d6c17872d56881c8fe99cb187116c38fa4b2647d28fe3063a61e"}},"tests/fixtures/benchmark_24/en/tangential_expected.json":{"size":128,"mtime_ns":1787196089699545000,"indexed_at_ns":1787196460162151700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/tangential_expected.json":"d5b1a4dc64246838a066f73c41f0e33dcd59636e61d6c0842a3728247e536aff"}},"tests/fixtures/benchmark_24/es/contextual.md":{"size":167,"mtime_ns":1787196129959491900,"indexed_at_ns":1787196460275850900,"word_count":22,"hashes":{"tests/fixtures/benchmark_24/es/contextual.md":"d45ef46752e2093455e35cbf97076f943ab2be736c9bc4580607960b9d068731"}},"tests/fixtures/benchmark_24/es/contextual_expected.json":{"size":136,"mtime_ns":1787196135705341100,"indexed_at_ns":1787196460162957600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/contextual_expected.json":"083f7153df08f93f595782eb2959e8505ac4bda4daaf6634c7a11d444c1ba6b0"}},"tests/fixtures/benchmark_24/es/direct.md":{"size":179,"mtime_ns":1787196118640588800,"indexed_at_ns":1787196460276716800,"word_count":29,"hashes":{"tests/fixtures/benchmark_24/es/direct.md":"f6e282a68830d5518285b0cda510fe57fa844cc6322979604a427797f07fdbd7"}},"tests/fixtures/benchmark_24/es/direct_expected.json":{"size":132,"mtime_ns":1787196124282103900,"indexed_at_ns":1787196460163727400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/direct_expected.json":"fb96e4ae9e2e1603b9ac4d31b6984b31d814b3f31a8a3ca03c52c1ffa4199471"}},"tests/fixtures/benchmark_24/es/ecp.json":{"size":590,"mtime_ns":1787196110761765400,"indexed_at_ns":1787196460164509700,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/es/ecp.json":"09cad55a4cc5a8c04b9898dee21c28b0d40561fcdd8ff012fe4de96616c05f7f"}},"tests/fixtures/benchmark_24/es/not_related.md":{"size":148,"mtime_ns":1787196152611035900,"indexed_at_ns":1787196460277631800,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/not_related.md":"1b8a7f7a6852c9ec33fc34513ab479bd5edba48762a0801f7982e48adcb0089b"}},"tests/fixtures/benchmark_24/es/not_related_expected.json":{"size":129,"mtime_ns":1787196158098444000,"indexed_at_ns":1787196460165309300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/not_related_expected.json":"01645746a62894e6448895d9bf5eac394e94e54711d7f519d2ed14d8b8957487"}},"tests/fixtures/benchmark_24/es/tangential.md":{"size":141,"mtime_ns":1787196141436479100,"indexed_at_ns":1787196460278451000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/tangential.md":"41888c762fdc38fb9d5a6dc39373ac2e38331ba4520535088efef8943ea40e49"}},"tests/fixtures/benchmark_24/es/tangential_expected.json":{"size":128,"mtime_ns":1787196147026058000,"indexed_at_ns":1787196460166503400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/tangential_expected.json":"aac2bd9ab5946710c62dc0a8daf8b1481462bed081e11db4558c08ef917fcf81"}},"tests/fixtures/benchmark_24/fr/contextual.md":{"size":167,"mtime_ns":1787196288415259700,"indexed_at_ns":1787196460279288100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/fr/contextual.md":"8a36d5737429e743ffbdc8c6ae78bcc9410915e048056dbd1fb4d3d493ac7ec6"}},"tests/fixtures/benchmark_24/fr/contextual_expected.json":{"size":136,"mtime_ns":1787196295706997200,"indexed_at_ns":1787196460167650500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/contextual_expected.json":"4a155288609fc5c935a39a633d7185109629871380b88af1c367922e44abe900"}},"tests/fixtures/benchmark_24/fr/direct.md":{"size":160,"mtime_ns":1787196277020128300,"indexed_at_ns":1787196460280073100,"word_count":20,"hashes":{"tests/fixtures/benchmark_24/fr/direct.md":"f218d9c8ada6c31e813c41bcb5e6a081a1df526022b907795065c0f845480077"}},"tests/fixtures/benchmark_24/fr/direct_expected.json":{"size":132,"mtime_ns":1787196282775093400,"indexed_at_ns":1787196460168573600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/direct_expected.json":"b93c2059a731e06a164fe1331e1c7ff01fb741f728c8aa1df151ee51bc993268"}},"tests/fixtures/benchmark_24/fr/ecp.json":{"size":600,"mtime_ns":1787197131861351500,"indexed_at_ns":1787197157506006100,"word_count":50,"hashes":{"tests/fixtures/benchmark_24/fr/ecp.json":"f2e7f9eafa1fd24514541868c83db90b69784d5faf4e8d039d79d11597b51428"}},"tests/fixtures/benchmark_24/fr/not_related.md":{"size":181,"mtime_ns":1787196312472120100,"indexed_at_ns":1787196460280811500,"word_count":30,"hashes":{"tests/fixtures/benchmark_24/fr/not_related.md":"475984d25541d876b7d9e3e8f7cff7b3db2bc1489c25d6612b911da6d2b2af8e"}},"tests/fixtures/benchmark_24/fr/not_related_expected.json":{"size":129,"mtime_ns":1787196317906240800,"indexed_at_ns":1787196460170379300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/not_related_expected.json":"31b3104faa21c2a417399fdd85d077d1c58fe74ee33fd41b0942580be6f81267"}},"tests/fixtures/benchmark_24/fr/tangential.md":{"size":158,"mtime_ns":1787196301225610200,"indexed_at_ns":1787196460281594400,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/fr/tangential.md":"7f6c6ab84d2a26675f9f16fb23d45cf1e97b3ff5e28fb98df6aeaa2368d2c305"}},"tests/fixtures/benchmark_24/fr/tangential_expected.json":{"size":128,"mtime_ns":1787196306729905200,"indexed_at_ns":1787196460171141500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/tangential_expected.json":"cc117a22ba73be1b308d377767ca0ae8da8e5889ccdaa430893b3ae70a58c9ca"}},"tests/fixtures/benchmark_24/it/contextual.md":{"size":150,"mtime_ns":1787196234462201200,"indexed_at_ns":1787196460283346800,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/it/contextual.md":"045391f6f676add7e1ae9391419ef65442259ab90f9cacb5caca4d468d292017"}},"tests/fixtures/benchmark_24/it/contextual_expected.json":{"size":136,"mtime_ns":1787196240055631300,"indexed_at_ns":1787196460171870600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/contextual_expected.json":"b2b4b297f43e5af1cda526e259acede43a31b552c0321bee1ce1c72572cec557"}},"tests/fixtures/benchmark_24/it/direct.md":{"size":145,"mtime_ns":1787196221664473400,"indexed_at_ns":1787196460284281100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/direct.md":"d54bad27d944692fa7f00a036f882d1c0e42d189241822adcae86edf73a444da"}},"tests/fixtures/benchmark_24/it/direct_expected.json":{"size":132,"mtime_ns":1787196228986408600,"indexed_at_ns":1787196460172673300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/direct_expected.json":"f94e71dc4b78c0646190ff288f08dab46c67f2356b8b75cc515c28af7c9c423c"}},"tests/fixtures/benchmark_24/it/ecp.json":{"size":529,"mtime_ns":1787196215715634300,"indexed_at_ns":1787196460173452600,"word_count":45,"hashes":{"tests/fixtures/benchmark_24/it/ecp.json":"bcbd12d3057368618b006c24f384341f91349c713d10a3028d3eb4afada32de6"}},"tests/fixtures/benchmark_24/it/not_related.md":{"size":153,"mtime_ns":1787196259362992300,"indexed_at_ns":1787196460285099000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/not_related.md":"bca227c7b17fd4404e5ca1d082b848981c1da28d0b657df1e025c03056387f13"}},"tests/fixtures/benchmark_24/it/not_related_expected.json":{"size":129,"mtime_ns":1787196265318256200,"indexed_at_ns":1787196460174468400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/not_related_expected.json":"d007ac531224ad0834e9a8807582d0e047524be4c30fffdd1a19a51dba36d85d"}},"tests/fixtures/benchmark_24/it/tangential.md":{"size":155,"mtime_ns":1787196245918356300,"indexed_at_ns":1787196460285993500,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/tangential.md":"a78a886f11462033c996a20b629e13c6bb55d4e08ffed20601cd4ea877b9db09"}},"tests/fixtures/benchmark_24/it/tangential_expected.json":{"size":128,"mtime_ns":1787196252898853500,"indexed_at_ns":1787196460175957500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/tangential_expected.json":"18872f6fe4cbd71812566494e88bd97633d696f732b3b5bad871f81076703f74"}},"tests/fixtures/benchmark_24/pt/contextual.md":{"size":125,"mtime_ns":1787196014201071400,"indexed_at_ns":1787196460286845200,"word_count":18,"hashes":{"tests/fixtures/benchmark_24/pt/contextual.md":"e9ea12885a5c68822f96691e543b55885afba3d00a9e0fa65837bd88e559f157"}},"tests/fixtures/benchmark_24/pt/contextual_expected.json":{"size":136,"mtime_ns":1787196019487136800,"indexed_at_ns":1787196460176915600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/contextual_expected.json":"34145a845a7f6b155bf42c028bb0c6d8d43ed5cd0b1d179c089b1e621fecd08f"}},"tests/fixtures/benchmark_24/pt/direct.md":{"size":140,"mtime_ns":1787196003236562000,"indexed_at_ns":1787196460287899900,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/pt/direct.md":"150182b9c1352163cb136c19141b85b3f0323e7eaa0cd023fce1dfef0de63d29"}},"tests/fixtures/benchmark_24/pt/direct_expected.json":{"size":132,"mtime_ns":1787196008785189600,"indexed_at_ns":1787196460177800600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/direct_expected.json":"a9c666394db6a6e2fcd503d8cf67549531ee9e70eb73b1edb2b6a2443316cbf2"}},"tests/fixtures/benchmark_24/pt/ecp.json":{"size":507,"mtime_ns":1787195997549710300,"indexed_at_ns":1787196460178615000,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/pt/ecp.json":"cec78c3ed8d2ec311d079239922a10a35a7fc9c382d8886fec81c6322d2a70ac"}},"tests/fixtures/benchmark_24/pt/not_related.md":{"size":124,"mtime_ns":1787196036724084200,"indexed_at_ns":1787196460288769500,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/pt/not_related.md":"3af103a7f0df8e93c6154157e9903dc7fc10d64fa69dd7c2b08d4f68b99b1972"}},"tests/fixtures/benchmark_24/pt/not_related_expected.json":{"size":129,"mtime_ns":1787196042201218800,"indexed_at_ns":1787196460179403700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/not_related_expected.json":"d5ce36bca028f31ba472e325993610eb82f98e1a8f84fa770bf92aa7158ce954"}},"tests/fixtures/benchmark_24/pt/tangential.md":{"size":140,"mtime_ns":1787196024978861700,"indexed_at_ns":1787196460289652400,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/pt/tangential.md":"77d86f819ccbefe9830a57151354ca47d83e46b3d0e55d0f5139f37a1d9df0b8"}},"tests/fixtures/benchmark_24/pt/tangential_expected.json":{"size":128,"mtime_ns":1787196030395574000,"indexed_at_ns":1787196460180223100,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/tangential_expected.json":"fb977fec8db613f9545c81adffe0295084c6198b5f7c9a85d8901a228de63a51"}},"tests/test_adapters.py":{"size":1165,"mtime_ns":1787196418632815700,"indexed_at_ns":1787196460180932200,"word_count":91,"hashes":{"tests/test_adapters.py":"8f251df2dd437652fcec9067de65259150a8ab268da9e6130525c616ae6482d9"}},"tests/test_benchmark_24.py":{"size":2787,"mtime_ns":1787196325540979600,"indexed_at_ns":1787196460181671200,"word_count":260,"hashes":{"tests/test_benchmark_24.py":"8531c79d25c9512f12066b7f4d807b80edfd4a304c59c616b364ce6724317252"}},"tests/test_classifier.py":{"size":3833,"mtime_ns":1787196364719572900,"indexed_at_ns":1787196460182437000,"word_count":351,"hashes":{"tests/test_classifier.py":"2ebb64b34c89563c5b8d34bc55249a03caf4fb4fd10d486b3f879d9abb273592"}},"tests/test_cli.py":{"size":3575,"mtime_ns":1787195939567137000,"indexed_at_ns":1787196460183174100,"word_count":302,"hashes":{"tests/test_cli.py":"11042bbc99e66b090af8640e547bcbfd57fe228c8fdf0b5f32a9267eca0fc291"}},"tests/test_language.py":{"size":1920,"mtime_ns":1787195891332966800,"indexed_at_ns":1787196460183874300,"word_count":239,"hashes":{"tests/test_language.py":"aca16328c2dd212cd8fd20b874a7d957d070e43a10b8730e4cc8e6b561fcc6e9"}},"tests/test_models.py":{"size":3700,"mtime_ns":1787195886500998800,"indexed_at_ns":1787196460184612900,"word_count":308,"hashes":{"tests/test_models.py":"e2094c6d23e805559813c496adeb60bd7b98205682c7fcb91b3ec945d2fe2a71"}},"tests/test_adversarial.py":{"size":8112,"mtime_ns":1787197141234033600,"indexed_at_ns":1787197157527186500,"word_count":694,"hashes":{"tests/test_adversarial.py":"254c6ff8fb35dbedfed6cedc4ee0dcdeb5247626406b42982bbc415315baeda2"}},"docs/googlenews_extractor_guia_completo.md":{"size":23056,"mtime_ns":1787231605083067700,"indexed_at_ns":1787234770705515600,"word_count":2286,"hashes":{"docs/googlenews_extractor_guia_completo.md":"290cd57feaac930e62af6b2a02ccd477c87210fa00f117cf9a2e7848fa9160dd"}},"examples/ecp_sao_paulo_futebol_clube.json":{"size":23358,"mtime_ns":1787229477299354200,"indexed_at_ns":1787234770609429300,"word_count":1524,"hashes":{"examples/ecp_sao_paulo_futebol_clube.json":"1af9006669d57f8dc123f0edea0d0fe8aaeb9016e36ec3e0d95023ea26996915"}},"scripts/extract_google_news.py":{"size":14772,"mtime_ns":1787236453523185500,"indexed_at_ns":1787236506840080000,"word_count":1318,"hashes":{"scripts/extract_google_news.py":"6eeb131ccc266f515693b75c184bd25446c9ec6613e7f2e61249c1543b6f7295"}},"specs/002-google-news-extractor/checklists/readiness.md":{"size":5258,"mtime_ns":1787234305932687100,"indexed_at_ns":1787234770736852100,"word_count":706,"hashes":{"specs/002-google-news-extractor/checklists/readiness.md":"ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c"}},"specs/002-google-news-extractor/checklists/requirements.md":{"size":1144,"mtime_ns":1787232386676398600,"indexed_at_ns":1787234770737689600,"word_count":158,"hashes":{"specs/002-google-news-extractor/checklists/requirements.md":"d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7"}},"specs/002-google-news-extractor/contracts/cli_contract.md":{"size":2681,"mtime_ns":1787236744313922700,"indexed_at_ns":1787236813512122300,"word_count":424,"hashes":{"specs/002-google-news-extractor/contracts/cli_contract.md":"6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23"}},"specs/002-google-news-extractor/data-model.md":{"size":3008,"mtime_ns":1787234040813431800,"indexed_at_ns":1787234770739130200,"word_count":472,"hashes":{"specs/002-google-news-extractor/data-model.md":"78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519"}},"specs/002-google-news-extractor/plan.md":{"size":3947,"mtime_ns":1787236725982522400,"indexed_at_ns":1787236813514970600,"word_count":448,"hashes":{"specs/002-google-news-extractor/plan.md":"57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b"}},"specs/002-google-news-extractor/quickstart.md":{"size":2341,"mtime_ns":1787236764020651300,"indexed_at_ns":1787236813515935900,"word_count":317,"hashes":{"specs/002-google-news-extractor/quickstart.md":"3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3"}},"specs/002-google-news-extractor/research.md":{"size":3630,"mtime_ns":1787236785046618200,"indexed_at_ns":1787236813516811500,"word_count":483,"hashes":{"specs/002-google-news-extractor/research.md":"71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13"}},"specs/002-google-news-extractor/spec.md":{"size":7506,"mtime_ns":1787236709078315600,"indexed_at_ns":1787236813517705300,"word_count":1096,"hashes":{"specs/002-google-news-extractor/spec.md":"e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0"}},"specs/002-google-news-extractor/tasks.md":{"size":5315,"mtime_ns":1787236802480804800,"indexed_at_ns":1787236813518644500,"word_count":692,"hashes":{"specs/002-google-news-extractor/tasks.md":"94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47"}},"tests/test_extract_google_news.py":{"size":12315,"mtime_ns":1787236301513448100,"indexed_at_ns":1787236351077424600,"word_count":1124,"hashes":{"tests/test_extract_google_news.py":"60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691"}},"scripts/__init__.py":{"size":50,"mtime_ns":1787234973578233800,"indexed_at_ns":1787235018163517900,"word_count":6,"hashes":{"scripts/__init__.py":"f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5"}},"README.md":{"size":12170,"mtime_ns":1787237002328848100,"indexed_at_ns":1787237011084017400,"word_count":1531,"hashes":{"readme.md":"6e21eba445b58b4993c56ccfb6d1ec43858c6af6917306dce21c222f7cb25ea0"}}} \ No newline at end of file +{".agents/skills/graphify/SKILL.md":{"size":41276,"mtime_ns":1787189375574389900,"indexed_at_ns":1787189383574665500,"word_count":5211,"hashes":{".agents/skills/graphify/skill.md":"3f0ba089a04e342e4337913a03515905fe205f57914b53b8eb1ff59dc926a4ea"}},".agents/skills/graphify/references/add-watch.md":{"size":2486,"mtime_ns":1787176247108301100,"indexed_at_ns":1787189352249948700,"word_count":366,"hashes":{".agents/skills/graphify/references/add-watch.md":"bc4c3ac2e736e36fff3e120b2a7967f1f049c6b05ca39db50606b4bb83c768f7"}},".agents/skills/graphify/references/exports.md":{"size":3362,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352252005200,"word_count":470,"hashes":{".agents/skills/graphify/references/exports.md":"81b09c0ad09d54d52b68755c32544024e290c02f53bdeb283b1b76d7eebc2445"}},".agents/skills/graphify/references/extraction-spec.md":{"size":7960,"mtime_ns":1787176247109325900,"indexed_at_ns":1787189352254091000,"word_count":1038,"hashes":{".agents/skills/graphify/references/extraction-spec.md":"d07c5b2e8224b1006b1a336f77d0af22f637fe8d20166895bf852c32324d851b"}},".agents/skills/graphify/references/github-and-merge.md":{"size":2177,"mtime_ns":1787176247111831300,"indexed_at_ns":1787189352255826900,"word_count":271,"hashes":{".agents/skills/graphify/references/github-and-merge.md":"189cf7c8c51988d23f6ad25dff96855ce0e7336bffa352dedb3867954e702f7b"}},".agents/skills/graphify/references/hooks.md":{"size":1267,"mtime_ns":1787176247112843500,"indexed_at_ns":1787189352257586300,"word_count":193,"hashes":{".agents/skills/graphify/references/hooks.md":"3e7d2df361e7059e921192b1693cc7859e4a2b0474446f8352be5a4624790eaa"}},".agents/skills/graphify/references/query.md":{"size":13456,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352259619700,"word_count":1763,"hashes":{".agents/skills/graphify/references/query.md":"151ad7ed0ee4aefe411f026261f605a61134cc6247324fe8df3ae1e785321283"}},".agents/skills/graphify/references/transcribe.md":{"size":3173,"mtime_ns":1787176247113897600,"indexed_at_ns":1787189352261502100,"word_count":418,"hashes":{".agents/skills/graphify/references/transcribe.md":"cbbbae90e451d722b39df0df7bc267bb9b7ecb3dd8a9e8be4b40237df053c8d6"}},".agents/skills/graphify/references/update.md":{"size":10425,"mtime_ns":1787176247115420200,"indexed_at_ns":1787189352263334600,"word_count":1196,"hashes":{".agents/skills/graphify/references/update.md":"b209dbb3bb5466e601a530b65925c55c34f040ffcf56d38ea64be9aaf75f92ce"}},".agents/skills/ponytail-audit/SKILL.md":{"size":1693,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325036907200,"word_count":234,"hashes":{".agents/skills/ponytail-audit/skill.md":"b29dd08e26692c4bdd87b024d43820e2b45527984d9b3330b5fcfc78491aac52"}},".agents/skills/ponytail-debt/SKILL.md":{"size":1747,"mtime_ns":1786995804152832800,"indexed_at_ns":1787189325037560500,"word_count":261,"hashes":{".agents/skills/ponytail-debt/skill.md":"4b8e8de454f0d7d46bce20b3f4b4ea4c5a1eb60691c0d8bef27ef4ded155e4bc"}},".agents/skills/ponytail-gain/SKILL.md":{"size":2023,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038161300,"word_count":246,"hashes":{".agents/skills/ponytail-gain/skill.md":"9e15d99db7452555dae0cc55e5c37799e1dc8acaed4eb89c0e9641d3afbb9646"}},".agents/skills/ponytail-help/SKILL.md":{"size":2867,"mtime_ns":1786995804154227800,"indexed_at_ns":1787189325038779900,"word_count":379,"hashes":{".agents/skills/ponytail-help/skill.md":"4b6ba4d12d19068c08b12af63c05b0acc9ce3beed06654065450c0cd6042d9db"}},".agents/skills/ponytail-review/SKILL.md":{"size":2440,"mtime_ns":1786995804155238700,"indexed_at_ns":1787189325039426100,"word_count":339,"hashes":{".agents/skills/ponytail-review/skill.md":"694090b91438cff578931361d36947da438722dd1f9f7460022bb3aa5b18b4de"}},".agents/skills/ponytail/SKILL.md":{"size":6757,"mtime_ns":1786995804156239700,"indexed_at_ns":1787189325040071200,"word_count":1079,"hashes":{".agents/skills/ponytail/skill.md":"64fc6e81a1b2b008fd72f5c9686498e53383e9cb25d518dc81305799e985bf6f"}},".agents/skills/speckit-analyze/SKILL.md":{"size":11642,"mtime_ns":1787189272133064100,"indexed_at_ns":1787189325040713600,"word_count":1569,"hashes":{".agents/skills/speckit-analyze/skill.md":"12f78b5b87a05d7075320de7e7df0fc3890ee915bf5203ef2c397fee48b0d04e"}},".agents/skills/speckit-checklist/SKILL.md":{"size":22277,"mtime_ns":1787189272160379600,"indexed_at_ns":1787189325041377200,"word_count":2981,"hashes":{".agents/skills/speckit-checklist/skill.md":"1b9b592206c499d1c46699ea99fd3795ec31638e3968aa90054d07bff9f26852"}},".agents/skills/speckit-clarify/SKILL.md":{"size":19212,"mtime_ns":1787189272137533000,"indexed_at_ns":1787189325042095600,"word_count":2688,"hashes":{".agents/skills/speckit-clarify/skill.md":"d091faedcb83b3f11a3049a84424f5d66b6bdf181b192a8167c07b94133e617d"}},".agents/skills/speckit-constitution/SKILL.md":{"size":9959,"mtime_ns":1787189272141381400,"indexed_at_ns":1787189325042781900,"word_count":1376,"hashes":{".agents/skills/speckit-constitution/skill.md":"791892a3d87f7bd6ea936f896c5050b183942489d68bfb383c2ba4de8380a901"}},".agents/skills/speckit-converge/SKILL.md":{"size":12639,"mtime_ns":1787189272150381400,"indexed_at_ns":1787189325043428600,"word_count":1798,"hashes":{".agents/skills/speckit-converge/skill.md":"c04c22c94ac9a47d73d547636127b06f38647627a4dbfbc36ae50dd0a95971b3"}},".agents/skills/speckit-implement/SKILL.md":{"size":12703,"mtime_ns":1787189272146373000,"indexed_at_ns":1787189325044057400,"word_count":1691,"hashes":{".agents/skills/speckit-implement/skill.md":"a779bc551abfa24d77556554b4cc0225b3c57bc436956b9cb9aafe306c581945"}},".agents/skills/speckit-plan/SKILL.md":{"size":7857,"mtime_ns":1787189272154380100,"indexed_at_ns":1787189325044689700,"word_count":1083,"hashes":{".agents/skills/speckit-plan/skill.md":"74b5f950130fa658b857d1c81ac052d89277cbe9901c51f01270963c746277b6"}},".agents/skills/speckit-specify/SKILL.md":{"size":18258,"mtime_ns":1787189272165381000,"indexed_at_ns":1787189325045384300,"word_count":2452,"hashes":{".agents/skills/speckit-specify/skill.md":"b86e839509339a9e11a605b6db50fcd3a435511d5cbe1bbbf4f473ac4bdd5447"}},".agents/skills/speckit-tasks/SKILL.md":{"size":10978,"mtime_ns":1787189272169379600,"indexed_at_ns":1787189325046041900,"word_count":1581,"hashes":{".agents/skills/speckit-tasks/skill.md":"69de6853783574ace13eadf7c706a610df2f2584901974b713a51c1576e53339"}},".agents/skills/speckit-taskstoissues/SKILL.md":{"size":7686,"mtime_ns":1787189272172364900,"indexed_at_ns":1787189325046665600,"word_count":1153,"hashes":{".agents/skills/speckit-taskstoissues/skill.md":"fc53c7413cf050b143775a1aeca2773eabb248782a58d599b52d0d232c6c05fd"}},".specify/init-options.json":{"size":174,"mtime_ns":1787189272252382200,"indexed_at_ns":1787189325022221000,"word_count":16,"hashes":{".specify/init-options.json":"b39c8c1030871841dded0aede892fe2d25b36883333777cbab7d7c1c67b36f87"}},".specify/integration.json":{"size":279,"mtime_ns":1787189272181379700,"indexed_at_ns":1787189325023926100,"word_count":24,"hashes":{".specify/integration.json":"d7545650420a2ed3fd6878ad7006b8de79f5e812dd6352c0d86d530db3a12134"}},".specify/integrations/agy.manifest.json":{"size":1299,"mtime_ns":1787189272178366200,"indexed_at_ns":1787189325024675000,"word_count":31,"hashes":{".specify/integrations/agy.manifest.json":"504c42820b8e37a7eb26b328881026982f3a6a71fa16de670c425b35b37f00e4"}},".specify/integrations/speckit.manifest.json":{"size":1536,"mtime_ns":1787189272238379600,"indexed_at_ns":1787189325025369900,"word_count":35,"hashes":{".specify/integrations/speckit.manifest.json":"cc15502df7b241b7ef08785a613f642d69dc561b8b5db2ccba121fcb6d2c1680"}},".specify/memory/.constitution-template.json":{"size":103,"mtime_ns":1787189272257369800,"indexed_at_ns":1787189325026009300,"word_count":6,"hashes":{".specify/memory/.constitution-template.json":"a0f4bf5e5399e118b61e8bae9404743316cea6d0fff4270d8758aeb55525b988"}},".specify/memory/constitution.md":{"size":2346,"mtime_ns":1787189272254379900,"indexed_at_ns":1787189325047314000,"word_count":272,"hashes":{".specify/memory/constitution.md":"51f14d46d5b6abddce28779396666792636c8d9629f0202e84501a5e759267ab"}},".specify/scripts/powershell/check-prerequisites.ps1":{"size":6122,"mtime_ns":1787189272202379800,"indexed_at_ns":1787189325026668000,"word_count":685,"hashes":{".specify/scripts/powershell/check-prerequisites.ps1":"80f1c4dc6817140dea987bb5727d38be754679c7052f1d9a088031536423cb23"}},".specify/scripts/powershell/common.ps1":{"size":34245,"mtime_ns":1787189272206379800,"indexed_at_ns":1787189325027347800,"word_count":3419,"hashes":{".specify/scripts/powershell/common.ps1":"63b253c967802e85ab12e76ac716eca4bb164dde2b9324e08e406d848ec4104b"}},".specify/scripts/powershell/create-new-feature.ps1":{"size":13026,"mtime_ns":1787189272211369000,"indexed_at_ns":1787189325028005300,"word_count":1421,"hashes":{".specify/scripts/powershell/create-new-feature.ps1":"7b4eb36a1fbbbe9a449b5f99de1055b1aad88e775eeb0db3f86e4ff013e6ddd1"}},".specify/scripts/powershell/resolve-template.ps1":{"size":889,"mtime_ns":1787189272214379900,"indexed_at_ns":1787189325028621300,"word_count":86,"hashes":{".specify/scripts/powershell/resolve-template.ps1":"78234a87c584e697a8fda8b18f134914e41465cbb67c1608b81e69860741502c"}},".specify/scripts/powershell/setup-plan.ps1":{"size":2927,"mtime_ns":1787189272218379500,"indexed_at_ns":1787189325029271700,"word_count":325,"hashes":{".specify/scripts/powershell/setup-plan.ps1":"4d5b636734ae78061da3a7675f0af4acfa6b65f7d994d5372c8c051f25bb8966"}},".specify/scripts/powershell/setup-tasks.ps1":{"size":3892,"mtime_ns":1787189272221379900,"indexed_at_ns":1787189325029900900,"word_count":429,"hashes":{".specify/scripts/powershell/setup-tasks.ps1":"5c980d1a41d186b634bc350128c31e5f3074099b996989c0a0d95b22623b2932"}},".specify/templates/checklist-template.md":{"size":2033,"mtime_ns":1787189272223379700,"indexed_at_ns":1787189325047907900,"word_count":271,"hashes":{".specify/templates/checklist-template.md":"6fb0a979b8534e1b3343d1ce6e45f84d32b118e096620bfdeed241dbc1a1da8a"}},".specify/templates/constitution-template.md":{"size":2346,"mtime_ns":1787189272226379800,"indexed_at_ns":1787189325048534600,"word_count":272,"hashes":{".specify/templates/constitution-template.md":"ae22b7c7ecb6ccd516fed25916e465146432c58f1bef904a92b535ac0bbecfcf"}},".specify/templates/plan-template.md":{"size":3682,"mtime_ns":1787189272229368600,"indexed_at_ns":1787189325049160100,"word_count":463,"hashes":{".specify/templates/plan-template.md":"e5cfe5097c5de0add0f0de02b7a5d2cd2470c9a2f24c0e6e15439d274e12abe0"}},".specify/templates/spec-template.md":{"size":4556,"mtime_ns":1787189272231368600,"indexed_at_ns":1787189325049780800,"word_count":629,"hashes":{".specify/templates/spec-template.md":"2734a509d4b2f34ee6258475c4fb2e80a6dbfcbc47c8552df5b6278907529250"}},".specify/templates/tasks-template.md":{"size":9171,"mtime_ns":1787189272234379700,"indexed_at_ns":1787189325050369300,"word_count":1384,"hashes":{".specify/templates/tasks-template.md":"070ed0dfafd8310a243b51cc30b1b6dfb19883fdd5ad20e4b53e45eb7f939e3e"}},".specify/workflows/speckit/workflow.yml":{"size":2216,"mtime_ns":1787160407462626700,"indexed_at_ns":1787189324996696100,"word_count":276},".specify/workflows/workflow-registry.json":{"size":381,"mtime_ns":1787189272250379800,"indexed_at_ns":1787189325030509700,"word_count":34,"hashes":{".specify/workflows/workflow-registry.json":"2c5bf7f4ba03ddf54945cd64d4740301036c18ebea47448d93ff428c771eff3d"}},".agents/rules/graphify.md":{"size":947,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352246818600,"word_count":127,"hashes":{".agents/rules/graphify.md":"e55792958648fb69255e3ce3f71a8fcead36307c34b2d67feda9ac650ac61803"}},".agents/workflows/graphify.md":{"size":239,"mtime_ns":1787189347444181700,"indexed_at_ns":1787189352301037700,"word_count":37,"hashes":{".agents/workflows/graphify.md":"d92622463299d313da48e2cdbebf79d7ea24ffaf2ae2de2a1714be8ee42b22b3"}},"specs/001-multilingual-entity-classifier/checklists/requirements.md":{"size":1897,"mtime_ns":1787193985655018100,"indexed_at_ns":1787194002726038300,"word_count":258,"hashes":{"specs/001-multilingual-entity-classifier/checklists/requirements.md":"277036c8add1bae5eeae6da5595cf66405670d33f9d4842784b1c5581cef62d0"}},"specs/001-multilingual-entity-classifier/spec.md":{"size":10753,"mtime_ns":1787194850510689300,"indexed_at_ns":1787194930726970700,"word_count":1423,"hashes":{"specs/001-multilingual-entity-classifier/spec.md":"f136d1d2e6a539072ea238be9d0e918dbc32eb89555ffd37e9b84579064e7799"}},"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":{"size":1808,"mtime_ns":1787194605824187100,"indexed_at_ns":1787194638410863000,"word_count":281,"hashes":{"specs/001-multilingual-entity-classifier/contracts/cli-contract.md":"894670a7228b93a2202203ac532aa0d415bd1921272b61a8d07e951a417bc75c"}},"specs/001-multilingual-entity-classifier/data-model.md":{"size":5137,"mtime_ns":1787194591677816000,"indexed_at_ns":1787194638411601100,"word_count":524,"hashes":{"specs/001-multilingual-entity-classifier/data-model.md":"89ecf2e55508b53ba208d011a76868294f0ff3cab87a217e7ed73c19edfbd9f6"}},"specs/001-multilingual-entity-classifier/plan.md":{"size":6215,"mtime_ns":1787194897854106700,"indexed_at_ns":1787194930724386200,"word_count":782,"hashes":{"specs/001-multilingual-entity-classifier/plan.md":"d37d1c5f3bffc4dad289ad128024ab6dffb409b06f49e96fc5a2fd2a735472a5"}},"specs/001-multilingual-entity-classifier/quickstart.md":{"size":3235,"mtime_ns":1787194877439851000,"indexed_at_ns":1787194930725082000,"word_count":339,"hashes":{"specs/001-multilingual-entity-classifier/quickstart.md":"816060813a37d728ceed955aa829d7fa4f80862f0932133cd5293bdbfdbd40db"}},"specs/001-multilingual-entity-classifier/research.md":{"size":4059,"mtime_ns":1787194581004019000,"indexed_at_ns":1787194638413783100,"word_count":509,"hashes":{"specs/001-multilingual-entity-classifier/research.md":"d4b61795fb09da693ead647d4c05e8f44699c36e9f43b47e808e09a2f970d996"}},"specs/001-multilingual-entity-classifier/tasks.md":{"size":6951,"mtime_ns":1787196452595599000,"indexed_at_ns":1787196460266934400,"word_count":874,"hashes":{"specs/001-multilingual-entity-classifier/tasks.md":"7a33202595cf192baf702d3d8e169ea8db59ca0f2fecb471594f7f3c48417082"}},"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":{"size":4154,"mtime_ns":1787195218247525200,"indexed_at_ns":1787195224690016000,"word_count":546,"hashes":{"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md":"6da9d16dcd60e927f892c69aa05945e99840b6dc824f93ea2686f12801e81a8a"}},"classify.py":{"size":6143,"mtime_ns":1787264412245764200,"indexed_at_ns":1787264516410989400,"word_count":482,"hashes":{"classify.py":"7fc86ae608bd6656cd4d2d91285ab1857edf96864249e6df308dc5c327b35775"}},"examples/content_northvolt_de.md":{"size":530,"mtime_ns":1787195963813740900,"indexed_at_ns":1787196460246681400,"word_count":57,"hashes":{"examples/content_northvolt_de.md":"5708f5dac050fea9c5e4fbdee40910cbb4c4be0efc9c3212f7cf2a7a034eb91d"}},"examples/content_presal_pt.md":{"size":506,"mtime_ns":1787195950024799800,"indexed_at_ns":1787196460247532700,"word_count":72,"hashes":{"examples/content_presal_pt.md":"ef8c7d61a4d721f7d702fa608274da920476be3a4f7bfe6e4f603abba12a133f"}},"examples/content_tangential_es.md":{"size":414,"mtime_ns":1787195975527150700,"indexed_at_ns":1787196460248387000,"word_count":60,"hashes":{"examples/content_tangential_es.md":"d02c405931b0752377a2ba10cbffe4d664713e33c3b6a8fbdd36b4a75b30f11b"}},"examples/ecp_apple.json":{"size":723,"mtime_ns":1787195969757856700,"indexed_at_ns":1787196460143672700,"word_count":68,"hashes":{"examples/ecp_apple.json":"166fb76e5d0d181835dd636450b6828565c2baafcb21228313bcea3c850d9a92"}},"examples/ecp_petrobras.json":{"size":714,"mtime_ns":1787195944394575600,"indexed_at_ns":1787196460144504800,"word_count":62,"hashes":{"examples/ecp_petrobras.json":"5dd24cf4d5cb9f636f3a1c2511eeaa152be0511b80974a4f36d5d68aded046db"}},"examples/ecp_volkswagen.json":{"size":720,"mtime_ns":1787195955456870500,"indexed_at_ns":1787196460145217300,"word_count":56,"hashes":{"examples/ecp_volkswagen.json":"3d3866179c67e332ad5aa46f5d15eeb4de3fa829d1cc21ccf73cc7f3a7eb32c5"}},"pyproject.toml":{"size":762,"mtime_ns":1787264482850924600,"indexed_at_ns":1787264516414577000,"word_count":86,"hashes":{"pyproject.toml":"ab0b0276581056a63d591237beb2e4e8fe3a4441c06963a847dd1f74b569dd88"}},"requirements.txt":{"size":313,"mtime_ns":1787240110134720000,"indexed_at_ns":1787240513253720300,"word_count":29},"src/__init__.py":{"size":83,"mtime_ns":1787195832559486000,"indexed_at_ns":1787196460146819200,"word_count":9,"hashes":{"src/__init__.py":"81c4eae46f05fd529d4f81f2d318c2b4e3af282f140963e9c5c876690bb1ca74"}},"src/adapters/__init__.py":{"size":73,"mtime_ns":1787195842271676800,"indexed_at_ns":1787196460147577400,"word_count":9,"hashes":{"src/adapters/__init__.py":"f4dcecfaeea2ae0852fd9836bfb4f9b2a9bedd60057157064e6d3fed4a8c1bd7"}},"src/adapters/base.py":{"size":907,"mtime_ns":1787264412243760700,"indexed_at_ns":1787264516431216000,"word_count":95,"hashes":{"src/adapters/base.py":"39d8678210517983b9fe9bfa26a1990c1f4f63195651da2a180d3bb73db51a1e"}},"src/adapters/embeddings.py":{"size":1399,"mtime_ns":1787264437927229800,"indexed_at_ns":1787264516432540300,"word_count":139,"hashes":{"src/adapters/embeddings.py":"acf74e38373f16e923350dbcf514b2958215391024c8abed3b8a621b0e69bd61"}},"src/adapters/llm.py":{"size":1232,"mtime_ns":1787264412243760700,"indexed_at_ns":1787264516433377900,"word_count":135,"hashes":{"src/adapters/llm.py":"084a9de66475aad2eb213ff906128d4094408891bd8ddbbd9f0e5674a1cb6192"}},"src/classifier.py":{"size":9804,"mtime_ns":1787264459052089000,"indexed_at_ns":1787264516434381400,"word_count":820,"hashes":{"src/classifier.py":"d890fd0c6be9bb68eeb459e8a89ed988c075978cc220d923a8b81714563db177"}},"src/language.py":{"size":10957,"mtime_ns":1787264437931227400,"indexed_at_ns":1787264516435249300,"word_count":887,"hashes":{"src/language.py":"75d8e6444528450b5d11eee5b51965c98525070bb65eb0edabc996701a4c5075"}},"src/models.py":{"size":5959,"mtime_ns":1787264437930228400,"indexed_at_ns":1787264516436265800,"word_count":487,"hashes":{"src/models.py":"260513e4539e617b4123ac5b5352cb6ce7caf3a5dfba08badf6390bf60784ac9"}},"src/parser.py":{"size":2654,"mtime_ns":1787264437931227400,"indexed_at_ns":1787264516437222700,"word_count":299,"hashes":{"src/parser.py":"a789a6ba02724ad75604dcc56991e8b7989558abe673d4701242012723954407"}},"tests/__init__.py":{"size":69,"mtime_ns":1787195847518641200,"indexed_at_ns":1787196460153585600,"word_count":8,"hashes":{"tests/__init__.py":"2acdae7d2696c23d5391ed343046cffa11b82f3f0d7d85767dacf0e762a955d1"}},"tests/fixtures/benchmark_24/de/contextual.md":{"size":144,"mtime_ns":1787196180779459400,"indexed_at_ns":1787196460268138600,"word_count":17,"hashes":{"tests/fixtures/benchmark_24/de/contextual.md":"b6a18c4bef2defe99773d3ba43137148d25b42ac27562b10b73ccdee1a49f203"}},"tests/fixtures/benchmark_24/de/contextual_expected.json":{"size":136,"mtime_ns":1787196187032823100,"indexed_at_ns":1787196460154321700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/contextual_expected.json":"cb741ed9bef3359a41d5c031ad213d4320c5b8fe3f8579e497ee9b1eda0ed478"}},"tests/fixtures/benchmark_24/de/direct.md":{"size":148,"mtime_ns":1787196169572812500,"indexed_at_ns":1787196460269192500,"word_count":16,"hashes":{"tests/fixtures/benchmark_24/de/direct.md":"67f375d26d8424655b76d5650c656b4af79b9964d52f2d24049e1f4de6545c9b"}},"tests/fixtures/benchmark_24/de/direct_expected.json":{"size":132,"mtime_ns":1787196175168070900,"indexed_at_ns":1787196460155004400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/direct_expected.json":"5301a39d31b365266b529ce9823145381241f8876af1ec21f0a9c27c9bdc80fa"}},"tests/fixtures/benchmark_24/de/ecp.json":{"size":579,"mtime_ns":1787196164027193900,"indexed_at_ns":1787196460155664300,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/de/ecp.json":"061fc3a9468d2baaaf2b3e8355d08d23261a9a7adc484cb06b45646eacba46fc"}},"tests/fixtures/benchmark_24/de/not_related.md":{"size":137,"mtime_ns":1787196204093781400,"indexed_at_ns":1787196460270056100,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/not_related.md":"4904b694b45a2058614a4e4350046eee042c4bbd7bcd6b88c56408ee3aebd81d"}},"tests/fixtures/benchmark_24/de/not_related_expected.json":{"size":129,"mtime_ns":1787196209729787600,"indexed_at_ns":1787196460156391600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/not_related_expected.json":"730fa882c1f3b8a7c0e2d3da9af55ee57ad7425a8b304c11f54e01899c740952"}},"tests/fixtures/benchmark_24/de/tangential.md":{"size":150,"mtime_ns":1787196193187087300,"indexed_at_ns":1787196460270857700,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/de/tangential.md":"8207068977006dafa7c9c4459bd996b5c124972d25f1015a589d3b06d0999613"}},"tests/fixtures/benchmark_24/de/tangential_expected.json":{"size":128,"mtime_ns":1787196198703847300,"indexed_at_ns":1787196460157130400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/de/tangential_expected.json":"82dea5e55d7586c4e7005755e3da4f44560238733094876047de51e854d41d92"}},"tests/fixtures/benchmark_24/en/contextual.md":{"size":148,"mtime_ns":1787196066427405900,"indexed_at_ns":1787196460271878300,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/en/contextual.md":"258a9f1ae01dae52955c1f45cb176e7d981a72ba869c33232c8c295f4816acc0"}},"tests/fixtures/benchmark_24/en/contextual_expected.json":{"size":136,"mtime_ns":1787196073211713100,"indexed_at_ns":1787196460158457500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/contextual_expected.json":"70605f9d8901d4c4b99d9fda1f30bc114cb0b65893579f77a1f9d50f62c1e3fc"}},"tests/fixtures/benchmark_24/en/direct.md":{"size":155,"mtime_ns":1787196054149613200,"indexed_at_ns":1787196460272766400,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/en/direct.md":"c7e0b093c386ccf19d9d7cbef4763dfb665213a7a245093af43529b1eaff8266"}},"tests/fixtures/benchmark_24/en/direct_expected.json":{"size":132,"mtime_ns":1787196059966736300,"indexed_at_ns":1787196460159526700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/direct_expected.json":"0b803b2ad37388be7ef4ea1d164db22c9fd784bcb9be6f56627d412f1f9299bc"}},"tests/fixtures/benchmark_24/en/ecp.json":{"size":594,"mtime_ns":1787197123717795600,"indexed_at_ns":1787197157494285900,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/en/ecp.json":"601423ac1e0b0e2bb7a0151ac87f5bdfd32450d90a022eaf9ef030338e0b4893"}},"tests/fixtures/benchmark_24/en/not_related.md":{"size":146,"mtime_ns":1787196350333465500,"indexed_at_ns":1787196460273595300,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/en/not_related.md":"2fa405b123733c5a9b5beba8c646b886b27e212cff55496a9fe7d6208ddfb11c"}},"tests/fixtures/benchmark_24/en/not_related_expected.json":{"size":129,"mtime_ns":1787196104521133100,"indexed_at_ns":1787196460161344300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/not_related_expected.json":"cb046b055b5c72d8146b6035a935211d60fb0b313ef819576bb8e7048d55f468"}},"tests/fixtures/benchmark_24/en/tangential.md":{"size":147,"mtime_ns":1787196082730266300,"indexed_at_ns":1787196460274648200,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/en/tangential.md":"793acebc11e5d6c17872d56881c8fe99cb187116c38fa4b2647d28fe3063a61e"}},"tests/fixtures/benchmark_24/en/tangential_expected.json":{"size":128,"mtime_ns":1787196089699545000,"indexed_at_ns":1787196460162151700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/en/tangential_expected.json":"d5b1a4dc64246838a066f73c41f0e33dcd59636e61d6c0842a3728247e536aff"}},"tests/fixtures/benchmark_24/es/contextual.md":{"size":167,"mtime_ns":1787196129959491900,"indexed_at_ns":1787196460275850900,"word_count":22,"hashes":{"tests/fixtures/benchmark_24/es/contextual.md":"d45ef46752e2093455e35cbf97076f943ab2be736c9bc4580607960b9d068731"}},"tests/fixtures/benchmark_24/es/contextual_expected.json":{"size":136,"mtime_ns":1787196135705341100,"indexed_at_ns":1787196460162957600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/contextual_expected.json":"083f7153df08f93f595782eb2959e8505ac4bda4daaf6634c7a11d444c1ba6b0"}},"tests/fixtures/benchmark_24/es/direct.md":{"size":179,"mtime_ns":1787196118640588800,"indexed_at_ns":1787196460276716800,"word_count":29,"hashes":{"tests/fixtures/benchmark_24/es/direct.md":"f6e282a68830d5518285b0cda510fe57fa844cc6322979604a427797f07fdbd7"}},"tests/fixtures/benchmark_24/es/direct_expected.json":{"size":132,"mtime_ns":1787196124282103900,"indexed_at_ns":1787196460163727400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/direct_expected.json":"fb96e4ae9e2e1603b9ac4d31b6984b31d814b3f31a8a3ca03c52c1ffa4199471"}},"tests/fixtures/benchmark_24/es/ecp.json":{"size":590,"mtime_ns":1787196110761765400,"indexed_at_ns":1787196460164509700,"word_count":52,"hashes":{"tests/fixtures/benchmark_24/es/ecp.json":"09cad55a4cc5a8c04b9898dee21c28b0d40561fcdd8ff012fe4de96616c05f7f"}},"tests/fixtures/benchmark_24/es/not_related.md":{"size":148,"mtime_ns":1787196152611035900,"indexed_at_ns":1787196460277631800,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/not_related.md":"1b8a7f7a6852c9ec33fc34513ab479bd5edba48762a0801f7982e48adcb0089b"}},"tests/fixtures/benchmark_24/es/not_related_expected.json":{"size":129,"mtime_ns":1787196158098444000,"indexed_at_ns":1787196460165309300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/not_related_expected.json":"01645746a62894e6448895d9bf5eac394e94e54711d7f519d2ed14d8b8957487"}},"tests/fixtures/benchmark_24/es/tangential.md":{"size":141,"mtime_ns":1787196141436479100,"indexed_at_ns":1787196460278451000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/es/tangential.md":"41888c762fdc38fb9d5a6dc39373ac2e38331ba4520535088efef8943ea40e49"}},"tests/fixtures/benchmark_24/es/tangential_expected.json":{"size":128,"mtime_ns":1787196147026058000,"indexed_at_ns":1787196460166503400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/es/tangential_expected.json":"aac2bd9ab5946710c62dc0a8daf8b1481462bed081e11db4558c08ef917fcf81"}},"tests/fixtures/benchmark_24/fr/contextual.md":{"size":167,"mtime_ns":1787196288415259700,"indexed_at_ns":1787196460279288100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/fr/contextual.md":"8a36d5737429e743ffbdc8c6ae78bcc9410915e048056dbd1fb4d3d493ac7ec6"}},"tests/fixtures/benchmark_24/fr/contextual_expected.json":{"size":136,"mtime_ns":1787196295706997200,"indexed_at_ns":1787196460167650500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/contextual_expected.json":"4a155288609fc5c935a39a633d7185109629871380b88af1c367922e44abe900"}},"tests/fixtures/benchmark_24/fr/direct.md":{"size":160,"mtime_ns":1787196277020128300,"indexed_at_ns":1787196460280073100,"word_count":20,"hashes":{"tests/fixtures/benchmark_24/fr/direct.md":"f218d9c8ada6c31e813c41bcb5e6a081a1df526022b907795065c0f845480077"}},"tests/fixtures/benchmark_24/fr/direct_expected.json":{"size":132,"mtime_ns":1787196282775093400,"indexed_at_ns":1787196460168573600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/direct_expected.json":"b93c2059a731e06a164fe1331e1c7ff01fb741f728c8aa1df151ee51bc993268"}},"tests/fixtures/benchmark_24/fr/ecp.json":{"size":600,"mtime_ns":1787197131861351500,"indexed_at_ns":1787197157506006100,"word_count":50,"hashes":{"tests/fixtures/benchmark_24/fr/ecp.json":"f2e7f9eafa1fd24514541868c83db90b69784d5faf4e8d039d79d11597b51428"}},"tests/fixtures/benchmark_24/fr/not_related.md":{"size":181,"mtime_ns":1787196312472120100,"indexed_at_ns":1787196460280811500,"word_count":30,"hashes":{"tests/fixtures/benchmark_24/fr/not_related.md":"475984d25541d876b7d9e3e8f7cff7b3db2bc1489c25d6612b911da6d2b2af8e"}},"tests/fixtures/benchmark_24/fr/not_related_expected.json":{"size":129,"mtime_ns":1787196317906240800,"indexed_at_ns":1787196460170379300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/not_related_expected.json":"31b3104faa21c2a417399fdd85d077d1c58fe74ee33fd41b0942580be6f81267"}},"tests/fixtures/benchmark_24/fr/tangential.md":{"size":158,"mtime_ns":1787196301225610200,"indexed_at_ns":1787196460281594400,"word_count":25,"hashes":{"tests/fixtures/benchmark_24/fr/tangential.md":"7f6c6ab84d2a26675f9f16fb23d45cf1e97b3ff5e28fb98df6aeaa2368d2c305"}},"tests/fixtures/benchmark_24/fr/tangential_expected.json":{"size":128,"mtime_ns":1787196306729905200,"indexed_at_ns":1787196460171141500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/fr/tangential_expected.json":"cc117a22ba73be1b308d377767ca0ae8da8e5889ccdaa430893b3ae70a58c9ca"}},"tests/fixtures/benchmark_24/it/contextual.md":{"size":150,"mtime_ns":1787196234462201200,"indexed_at_ns":1787196460283346800,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/it/contextual.md":"045391f6f676add7e1ae9391419ef65442259ab90f9cacb5caca4d468d292017"}},"tests/fixtures/benchmark_24/it/contextual_expected.json":{"size":136,"mtime_ns":1787196240055631300,"indexed_at_ns":1787196460171870600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/contextual_expected.json":"b2b4b297f43e5af1cda526e259acede43a31b552c0321bee1ce1c72572cec557"}},"tests/fixtures/benchmark_24/it/direct.md":{"size":145,"mtime_ns":1787196221664473400,"indexed_at_ns":1787196460284281100,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/direct.md":"d54bad27d944692fa7f00a036f882d1c0e42d189241822adcae86edf73a444da"}},"tests/fixtures/benchmark_24/it/direct_expected.json":{"size":132,"mtime_ns":1787196228986408600,"indexed_at_ns":1787196460172673300,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/direct_expected.json":"f94e71dc4b78c0646190ff288f08dab46c67f2356b8b75cc515c28af7c9c423c"}},"tests/fixtures/benchmark_24/it/ecp.json":{"size":529,"mtime_ns":1787196215715634300,"indexed_at_ns":1787196460173452600,"word_count":45,"hashes":{"tests/fixtures/benchmark_24/it/ecp.json":"bcbd12d3057368618b006c24f384341f91349c713d10a3028d3eb4afada32de6"}},"tests/fixtures/benchmark_24/it/not_related.md":{"size":153,"mtime_ns":1787196259362992300,"indexed_at_ns":1787196460285099000,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/not_related.md":"bca227c7b17fd4404e5ca1d082b848981c1da28d0b657df1e025c03056387f13"}},"tests/fixtures/benchmark_24/it/not_related_expected.json":{"size":129,"mtime_ns":1787196265318256200,"indexed_at_ns":1787196460174468400,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/not_related_expected.json":"d007ac531224ad0834e9a8807582d0e047524be4c30fffdd1a19a51dba36d85d"}},"tests/fixtures/benchmark_24/it/tangential.md":{"size":155,"mtime_ns":1787196245918356300,"indexed_at_ns":1787196460285993500,"word_count":23,"hashes":{"tests/fixtures/benchmark_24/it/tangential.md":"a78a886f11462033c996a20b629e13c6bb55d4e08ffed20601cd4ea877b9db09"}},"tests/fixtures/benchmark_24/it/tangential_expected.json":{"size":128,"mtime_ns":1787196252898853500,"indexed_at_ns":1787196460175957500,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/it/tangential_expected.json":"18872f6fe4cbd71812566494e88bd97633d696f732b3b5bad871f81076703f74"}},"tests/fixtures/benchmark_24/pt/contextual.md":{"size":125,"mtime_ns":1787196014201071400,"indexed_at_ns":1787196460286845200,"word_count":18,"hashes":{"tests/fixtures/benchmark_24/pt/contextual.md":"e9ea12885a5c68822f96691e543b55885afba3d00a9e0fa65837bd88e559f157"}},"tests/fixtures/benchmark_24/pt/contextual_expected.json":{"size":136,"mtime_ns":1787196019487136800,"indexed_at_ns":1787196460176915600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/contextual_expected.json":"34145a845a7f6b155bf42c028bb0c6d8d43ed5cd0b1d179c089b1e621fecd08f"}},"tests/fixtures/benchmark_24/pt/direct.md":{"size":140,"mtime_ns":1787196003236562000,"indexed_at_ns":1787196460287899900,"word_count":21,"hashes":{"tests/fixtures/benchmark_24/pt/direct.md":"150182b9c1352163cb136c19141b85b3f0323e7eaa0cd023fce1dfef0de63d29"}},"tests/fixtures/benchmark_24/pt/direct_expected.json":{"size":132,"mtime_ns":1787196008785189600,"indexed_at_ns":1787196460177800600,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/direct_expected.json":"a9c666394db6a6e2fcd503d8cf67549531ee9e70eb73b1edb2b6a2443316cbf2"}},"tests/fixtures/benchmark_24/pt/ecp.json":{"size":507,"mtime_ns":1787195997549710300,"indexed_at_ns":1787196460178615000,"word_count":40,"hashes":{"tests/fixtures/benchmark_24/pt/ecp.json":"cec78c3ed8d2ec311d079239922a10a35a7fc9c382d8886fec81c6322d2a70ac"}},"tests/fixtures/benchmark_24/pt/not_related.md":{"size":124,"mtime_ns":1787196036724084200,"indexed_at_ns":1787196460288769500,"word_count":19,"hashes":{"tests/fixtures/benchmark_24/pt/not_related.md":"3af103a7f0df8e93c6154157e9903dc7fc10d64fa69dd7c2b08d4f68b99b1972"}},"tests/fixtures/benchmark_24/pt/not_related_expected.json":{"size":129,"mtime_ns":1787196042201218800,"indexed_at_ns":1787196460179403700,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/not_related_expected.json":"d5ce36bca028f31ba472e325993610eb82f98e1a8f84fa770bf92aa7158ce954"}},"tests/fixtures/benchmark_24/pt/tangential.md":{"size":140,"mtime_ns":1787196024978861700,"indexed_at_ns":1787196460289652400,"word_count":24,"hashes":{"tests/fixtures/benchmark_24/pt/tangential.md":"77d86f819ccbefe9830a57151354ca47d83e46b3d0e55d0f5139f37a1d9df0b8"}},"tests/fixtures/benchmark_24/pt/tangential_expected.json":{"size":128,"mtime_ns":1787196030395574000,"indexed_at_ns":1787196460180223100,"word_count":10,"hashes":{"tests/fixtures/benchmark_24/pt/tangential_expected.json":"fb977fec8db613f9545c81adffe0295084c6198b5f7c9a85d8901a228de63a51"}},"tests/test_adapters.py":{"size":1166,"mtime_ns":1787264437929228700,"indexed_at_ns":1787264516466770300,"word_count":91,"hashes":{"tests/test_adapters.py":"32a9519d5c55012aedaa43a786aff1cec88e7391d186f5d0a54213ca1b204f48"}},"tests/test_benchmark_24.py":{"size":2757,"mtime_ns":1787264437930228400,"indexed_at_ns":1787264516468505400,"word_count":257,"hashes":{"tests/test_benchmark_24.py":"7c136ac4d442e47a2f8914303880ce265c2fe49485eb182014fc3e10c06f9e71"}},"tests/test_classifier.py":{"size":3836,"mtime_ns":1787264437927229800,"indexed_at_ns":1787264516469349200,"word_count":351,"hashes":{"tests/test_classifier.py":"d3323e05dd21f20686d9293f767ebb2ced206c7b74e7ca89d2ac02c0a4e31282"}},"tests/test_cli.py":{"size":3872,"mtime_ns":1787264437929228700,"indexed_at_ns":1787264516470059400,"word_count":314,"hashes":{"tests/test_cli.py":"0573d9b13e45413beefac33d86eae94e17dbbf37554120a1fc5720bfb3d67d63"}},"tests/test_language.py":{"size":1929,"mtime_ns":1787264437929228700,"indexed_at_ns":1787264516472426100,"word_count":242,"hashes":{"tests/test_language.py":"7f7aae057ecbda26edd747d24241e9cf36f611c71c5d70d0aa308df7d71e0547"}},"tests/test_models.py":{"size":3668,"mtime_ns":1787264437930228400,"indexed_at_ns":1787264516473330500,"word_count":306,"hashes":{"tests/test_models.py":"232210770fc690edcc732d940bafe46fcec9bfed7f17e0aa5c60e6cf6635751f"}},"tests/test_adversarial.py":{"size":8429,"mtime_ns":1787264437924228700,"indexed_at_ns":1787264516467613100,"word_count":704,"hashes":{"tests/test_adversarial.py":"3acc7ff372e6b0f1f42dad29d280b835ac51784b1dca8054472287a7355c9386"}},"docs/googlenews_extractor_guia_completo.md":{"size":23200,"mtime_ns":1787264437928228500,"indexed_at_ns":1787264516560203200,"word_count":2292,"hashes":{"docs/googlenews_extractor_guia_completo.md":"dcff19204ab04403030b2339663c0d3c161744f50a53f5254c459a894eb3b3c8"}},"examples/ecp_sao_paulo_futebol_clube.json":{"size":23358,"mtime_ns":1787229477299354200,"indexed_at_ns":1787234770609429300,"word_count":1524,"hashes":{"examples/ecp_sao_paulo_futebol_clube.json":"1af9006669d57f8dc123f0edea0d0fe8aaeb9016e36ec3e0d95023ea26996915"}},"scripts/extract_google_news.py":{"size":14720,"mtime_ns":1787264437927229800,"indexed_at_ns":1787264516421445500,"word_count":1314,"hashes":{"scripts/extract_google_news.py":"aa17b59997ab6bb549a918fb1026ddf5a5c5143c75c234895dc32447e2c5b85a"}},"specs/002-google-news-extractor/checklists/readiness.md":{"size":5258,"mtime_ns":1787234305932687100,"indexed_at_ns":1787234770736852100,"word_count":706,"hashes":{"specs/002-google-news-extractor/checklists/readiness.md":"ad4c18a1fe1c6f19f45a043748fe4f195db525afac53ed77905222015ec5230c"}},"specs/002-google-news-extractor/checklists/requirements.md":{"size":1144,"mtime_ns":1787232386676398600,"indexed_at_ns":1787234770737689600,"word_count":158,"hashes":{"specs/002-google-news-extractor/checklists/requirements.md":"d83944755d7f6e43d8c76e032f0047be6f8c4cb2b80dea65e198f57b9c5eccd7"}},"specs/002-google-news-extractor/contracts/cli_contract.md":{"size":2681,"mtime_ns":1787236744313922700,"indexed_at_ns":1787236813512122300,"word_count":424,"hashes":{"specs/002-google-news-extractor/contracts/cli_contract.md":"6b9e3c10becd7b8fa633e409e9a3298ff4b2903dfd5194054c8e41dd0c0c5f23"}},"specs/002-google-news-extractor/data-model.md":{"size":3008,"mtime_ns":1787234040813431800,"indexed_at_ns":1787234770739130200,"word_count":472,"hashes":{"specs/002-google-news-extractor/data-model.md":"78cec846c1173fbdff3c77313ba02c7977365e5ab102df527f90ed7b06e69519"}},"specs/002-google-news-extractor/plan.md":{"size":3947,"mtime_ns":1787236725982522400,"indexed_at_ns":1787236813514970600,"word_count":448,"hashes":{"specs/002-google-news-extractor/plan.md":"57a0a3eb1fd6d7afbe394be62e681a02d7ef26124f4142b9d8b72ea95259a34b"}},"specs/002-google-news-extractor/quickstart.md":{"size":2341,"mtime_ns":1787236764020651300,"indexed_at_ns":1787236813515935900,"word_count":317,"hashes":{"specs/002-google-news-extractor/quickstart.md":"3478a487614358839b3e53c15b05b86a4b850bead9b4142384566e244753bde3"}},"specs/002-google-news-extractor/research.md":{"size":3630,"mtime_ns":1787236785046618200,"indexed_at_ns":1787236813516811500,"word_count":483,"hashes":{"specs/002-google-news-extractor/research.md":"71e796c83a1c293fa380b4f01a2eed810275e4628548e0f8e8b9ecaa90d3ac13"}},"specs/002-google-news-extractor/spec.md":{"size":7506,"mtime_ns":1787236709078315600,"indexed_at_ns":1787236813517705300,"word_count":1096,"hashes":{"specs/002-google-news-extractor/spec.md":"e84b37b25f61ed209d1295f77bf84024ac6c3c818f6b98043204a9f81bff49f0"}},"specs/002-google-news-extractor/tasks.md":{"size":5315,"mtime_ns":1787236802480804800,"indexed_at_ns":1787236813518644500,"word_count":692,"hashes":{"specs/002-google-news-extractor/tasks.md":"94430da291ad0dc34b1cde7c30f2b8e1ce0c83d35b5e71ab68bd135146c9ef47"}},"tests/test_extract_google_news.py":{"size":12221,"mtime_ns":1787264437931227400,"indexed_at_ns":1787264516471687100,"word_count":1114,"hashes":{"tests/test_extract_google_news.py":"5304424b746b871720985cfdd031b0f8895c664bdd9d273b9c1723f445a2276f"}},"scripts/__init__.py":{"size":50,"mtime_ns":1787234973578233800,"indexed_at_ns":1787235018163517900,"word_count":6,"hashes":{"scripts/__init__.py":"f30a694c2114ef6bc58efa1caea7265dde8ef296d92cdb77c8b3e3d1f21af3a5"}},"README.md":{"size":15049,"mtime_ns":1787264334449844300,"indexed_at_ns":1787264516559452000,"word_count":1899,"hashes":{"readme.md":"42e10af009afb4936c6b585a4392ac94c84ff695a2ab33ff2655bf84b053c553"}},"docs/prd_extrator_artigos_nlp.md":{"size":11894,"mtime_ns":1787237774009258300,"indexed_at_ns":1787240513666474800,"word_count":1548,"hashes":{"docs/prd_extrator_artigos_nlp.md":"e10035c73584efc6d043bec17d43388ecbf25b576ca3475d0b9906cbc16fad90"}},"scripts/extract_article_contents.py":{"size":27025,"mtime_ns":1787264465341521500,"indexed_at_ns":1787264516419754800,"word_count":2069,"hashes":{"scripts/extract_article_contents.py":"a76fc087a959496bc2cf4767baaed89628bd945e1aaa8e981be840cf1240f1ba"}},"specs/003-article-content-extractor/checklists/extraction.md":{"size":4716,"mtime_ns":1787239873797626000,"indexed_at_ns":1787240513705426800,"word_count":609,"hashes":{"specs/003-article-content-extractor/checklists/extraction.md":"b8351909b93111f8f1e50f0f100446d3f579d0c11823eba4936c72a617aba5f8"}},"specs/003-article-content-extractor/checklists/requirements.md":{"size":1209,"mtime_ns":1787237950814070500,"indexed_at_ns":1787240513706099200,"word_count":164,"hashes":{"specs/003-article-content-extractor/checklists/requirements.md":"3c770288636c4523897b41c6dad5f2771af2007654d6b5f6b87d74bc9c33d11d"}},"specs/003-article-content-extractor/contracts/cli-contract.md":{"size":2493,"mtime_ns":1787239569056013800,"indexed_at_ns":1787240513706906100,"word_count":390,"hashes":{"specs/003-article-content-extractor/contracts/cli-contract.md":"44c5ec336c210bdd9671a5e852ee750e91f426b87c954b2c52499513cb85168d"}},"specs/003-article-content-extractor/contracts/json-schema.md":{"size":3065,"mtime_ns":1787239578931403200,"indexed_at_ns":1787240513707577900,"word_count":298,"hashes":{"specs/003-article-content-extractor/contracts/json-schema.md":"0cefe7faadd07932717b8c3493914e5367ec6ac50673671aee1f4edc7bde7e37"}},"specs/003-article-content-extractor/data-model.md":{"size":4410,"mtime_ns":1787239558236282500,"indexed_at_ns":1787240513708324600,"word_count":733,"hashes":{"specs/003-article-content-extractor/data-model.md":"651180962cf2a9253cb0a22429947eb3bf552c26be7defce98ef7583cbcd8fbf"}},"specs/003-article-content-extractor/plan.md":{"size":4642,"mtime_ns":1787264323707266000,"indexed_at_ns":1787264516630842500,"word_count":510,"hashes":{"specs/003-article-content-extractor/plan.md":"3ae38a2a907f1aeb6987c647a6290533acde67ef91f590445bdec0e1da5f52be"}},"specs/003-article-content-extractor/quickstart.md":{"size":2210,"mtime_ns":1787239589989665700,"indexed_at_ns":1787240513709638200,"word_count":282,"hashes":{"specs/003-article-content-extractor/quickstart.md":"332c407a9b1c3eafcb874d24f5396f005cde65d4d8e9e643fda95f47f093c544"}},"specs/003-article-content-extractor/research.md":{"size":4220,"mtime_ns":1787239545833014600,"indexed_at_ns":1787240513710259700,"word_count":588,"hashes":{"specs/003-article-content-extractor/research.md":"485f0e63023aa6dc8c4c64b22dd7394c032b7f468fa41632967789c4e269587b"}},"specs/003-article-content-extractor/spec.md":{"size":10428,"mtime_ns":1787264319288323400,"indexed_at_ns":1787264516635570600,"word_count":1515,"hashes":{"specs/003-article-content-extractor/spec.md":"1ad671e31d86c76aedaa27d5d4da839cdf2d602bd17e618310c80bd3747fab78"}},"specs/003-article-content-extractor/tasks.md":{"size":8201,"mtime_ns":1787240464652064400,"indexed_at_ns":1787240513711676500,"word_count":1070,"hashes":{"specs/003-article-content-extractor/tasks.md":"3122914461e8d6017e63900c66fa8935135b5efcc9fca8d64e762ee109602901"}},"tests/test_extract_article_contents.py":{"size":13204,"mtime_ns":1787264437929228700,"indexed_at_ns":1787264516470977000,"word_count":1039,"hashes":{"tests/test_extract_article_contents.py":"4333ac8911d1cd27964b0bacfa394ee8fe9e068bb2f25f3e0ff5e299564a7b4d"}}} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index afee3e0..c140efe 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@
-
802 nodes · 957 edges · 104 communities
+
1000 nodes · 1220 edges · 115 communities