Fixed
pip install "ragleap-rag[web]"gave a brokeningest_url()on a fresh install:trafilaturaimportslxml.html.clean, which is now the separatelxml_html_cleanpackage, and nothing installed it. Thewebandallextras now include it, andfetch_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; withlxml_html_cleanadded the import worked and a loopback page extracted correctly.).parquetextraction failed with a rawModuleNotFoundErrorforpandas:_extract_parquetcallsTable.to_pandas()and no extra installed pandas.pandasis now in theformatsandallextras, and a missing install raises the usualValueErrorwith an install hint. Output is unchanged for existing users.ragleap.__version__reported0.12.6in the published 0.12.9 wheel (package metadata said 0.12.9). It is now0.12.10, and a test compares it withpyproject.toml.- The
RagLeap.ingest()docstring said it handled only .txt/.pdf/.docx.
Changed
- Tests: an autouse fixture in
tests/conftest.pyremoves*_API_KEY,*_EMBEDDING_MODEL,*_EMBEDDING_DIMENSIONS,*_EMBEDDING_BASE_URLandEMBEDDING_DIMENSIONSfor every test. 12 config-validation tests (11 intests/test_embedding.py, plustests/test_pinecone_backend.py::test_requires_api_key) failed whenever those variables were set, becauseEmbeddingConfigandPineconeBackendfall back to the environment. - CI:
ragleap-rag-testsnow 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.xlwtwas added to thetestextra to generate the.xlssample.
Verified
- Local run, Python 3.10, all extras installed, Postgres test database,
CI=trueso 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 needonnxruntime). WithoutCI=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_metadataandtest_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.0floor. The 28 per-extension tests use minimal generated samples, not complex real-world documents.
Known, not fixed here
_extract_ziphas 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 returnNone, 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__is0.12.10(imported from site-packages);import trafilaturaworks; a page served on a loopback address was fetched and extracted byfetch_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 commitca4ae87, before this tag existed. This tag points ataf90931. The tag run's PyPI step usesskip-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.tomlis empty: the package source and metadata are identical. Remaining differences underpackages/ragleap-ragare outsidesrc/andpyproject.toml. -
A wheel rebuilt from the
ragleap-rag-v0.12.10tag (python -m build --wheel) has the same 32 files with identical contents as the wheel published on PyPI (RECORD files excluded from the comparison).