RagLeap
ragleap-rag · release notes

ragleap-rag v0.12.10

Fixed

  • pip install "ragleap-rag[web]" gave a broken ingest_url() on a fresh install: trafilatura imports lxml.html.clean, which is now the separate lxml_html_clean package, and nothing installed it. The web and all extras now include it, and fetch_url_text() reports the real import error instead of a generic "requires the 'web' extra" message. (Reproduced on Python 3.10 with lxml 6.1.3 and trafilatura 2.2.0; with lxml_html_clean added the import worked and a loopback page extracted correctly.)
  • .parquet extraction failed with a raw ModuleNotFoundError for pandas: _extract_parquet calls Table.to_pandas() and no extra installed pandas. pandas is now in the formats and all extras, and a missing install raises the usual ValueError with an install hint. Output is unchanged for existing users.
  • ragleap.__version__ reported 0.12.6 in the published 0.12.9 wheel (package metadata said 0.12.9). It is now 0.12.10, and a test compares it with pyproject.toml.
  • The RagLeap.ingest() docstring said it handled only .txt/.pdf/.docx.

Changed

  • Tests: an autouse fixture in tests/conftest.py removes *_API_KEY, *_EMBEDDING_MODEL, *_EMBEDDING_DIMENSIONS, *_EMBEDDING_BASE_URL and EMBEDDING_DIMENSIONS for every test. 12 config-validation tests (11 in tests/test_embedding.py, plus tests/test_pinecone_backend.py::test_requires_api_key) failed whenever those variables were set, because EmbeddingConfig and PineconeBackend fall back to the environment.
  • CI: ragleap-rag-tests now installs the formats, web, qdrant, weaviate, pinecone and milvus extras. Before this, 63 mocked Pinecone/Milvus/Qdrant/Weaviate tests were skipped in CI because their client packages were missing (they passed locally with the extras installed). A CI-only guard test fails if an extra goes missing, so tests cannot silently turn into skips again.
  • New tests/test_parsers.py: one minimal generated sample per supported extension (all 28), plus checks for the legacy-format and missing-pandas errors. xlwt was added to the test extra to generate the .xls sample.

Verified

  • Local run, Python 3.10, all extras installed, Postgres test database, CI=true so a missing extra fails instead of skipping: 326 tests, 312 passed, 14 skipped (12 live-gated Qdrant/Weaviate tests that need running servers, 2 that need onnxruntime). Without CI=true: 293 passed, 33 skipped (the 19 extras-guard tests skip locally).
  • Minimum versions installed and exercised: pandas==2.2.2, lxml_html_clean==0.4.0, xlwt==1.3.0 (parquet extraction output and the trafilatura import checked).
  • CI on this PR's branch (Python 3.11, Postgres service, all extras, run 36963231731): 308 passed, 18 skipped.
  • Python 3.11.15 with pandas 3.0.6 and pyarrow 25.0.1 (separate venv): parquet extraction of a table containing a null and floats gave the same output as with pandas 2.2.2 ('a\tb\nx\t1.5\n\t2.0\n'); test_parsers, test_web_import_error, test_package_metadata and test_embedding: 63 passed, 1 failed - test_ollama_full_rag_integration_with_faiss, because that venv was created without the faiss extra (it passes in the full-extras runs).
  • Not verified: the pyarrow>=14.0.0 floor. The 28 per-extension tests use minimal generated samples, not complex real-world documents.

Known, not fixed here

  • _extract_zip has no limit on member count or expanded size (a 39,002-byte zip returned 40,000,016 characters with no error).
  • fetch_url_text() / ingest_url() do not check the target address (a loopback URL was fetched), and failures return None, so "blocked or too large" looks like an empty page.
  • Tracked in issue #534.

Published-wheel check (2026-10-02)

  • Fresh venv, Python 3.10, pip install "ragleap-rag[web,formats]==0.12.10" from PyPI: ragleap.__version__ is 0.12.10 (imported from site-packages); import trafilatura works; a page served on a loopback address was fetched and extracted by fetch_url_text() (the 0.12.9 failure); parquet extraction of a table containing a null and floats returned 'a\tb\nx\t1.5\n\t2.0\n'.
  • CI on the tagged commit (af90931): all jobs passed.

Provenance

  • The PyPI files for 0.12.10 were uploaded on 2026-10-02 at about 04:17 UTC by a manual run of the Release workflow (workflow_dispatch, target PyPI, run 36963888614) built from merge commit ca4ae87, before this tag existed. This tag points at af90931. The tag run's PyPI step uses skip-existing, so it found the files already there and uploaded nothing (log: "Skipping ... because it appears to already exist").

  • git diff ca4ae87 ragleap-rag-v0.12.10 -- packages/ragleap-rag/src packages/ragleap-rag/pyproject.toml is empty: the package source and metadata are identical. Remaining differences under packages/ragleap-rag are outside src/ and pyproject.toml.

  • A wheel rebuilt from the ragleap-rag-v0.12.10 tag (python -m build --wheel) has the same 32 files with identical contents as the wheel published on PyPI (RECORD files excluded from the comparison).

View on GitHub Package page All releases
← v0.12.9

Release notes mirrored from GitHub Releases.