diff --git a/Makefile b/Makefile index fe1350d5f5..472661d6e4 100644 --- a/Makefile +++ b/Makefile @@ -142,7 +142,7 @@ export UNSTRUCTURED_INCLUDE_DEBUG_METADATA ?= false .PHONY: test test: PYTHONPATH=. CI=$(CI) \ - UNSTRUCTURED_INCLUDE_DEBUG_METADATA=$(UNSTRUCTURED_INCLUDE_DEBUG_METADATA) ${PYTHON} -m pytest test_${PACKAGE_NAME} --cov=${PACKAGE_NAME} --cov-report term-missing --durations=40 + UNSTRUCTURED_INCLUDE_DEBUG_METADATA=$(UNSTRUCTURED_INCLUDE_DEBUG_METADATA) ${PYTHON} -m pytest -n auto test_${PACKAGE_NAME} --cov=${PACKAGE_NAME} --cov-report term-missing --durations=40 .PHONY: test-unstructured-api-unit test-unstructured-api-unit: @@ -151,7 +151,7 @@ test-unstructured-api-unit: .PHONY: test-no-extras test-no-extras: PYTHONPATH=. CI=$(CI) \ - UNSTRUCTURED_INCLUDE_DEBUG_METADATA=$(UNSTRUCTURED_INCLUDE_DEBUG_METADATA) ${PYTHON} -m pytest \ + UNSTRUCTURED_INCLUDE_DEBUG_METADATA=$(UNSTRUCTURED_INCLUDE_DEBUG_METADATA) ${PYTHON} -m pytest -n auto \ test_${PACKAGE_NAME}/partition/test_text.py \ test_${PACKAGE_NAME}/partition/test_email.py \ test_${PACKAGE_NAME}/partition/html/test_partition.py \ @@ -159,52 +159,52 @@ test-no-extras: .PHONY: test-extra-csv test-extra-csv: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest \ + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto \ test_unstructured/partition/test_csv.py \ test_unstructured/partition/test_tsv.py .PHONY: test-extra-docx test-extra-docx: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest \ + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n audo \ test_unstructured/partition/test_doc.py \ test_unstructured/partition/test_docx.py .PHONY: test-extra-epub test-extra-epub: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/partition/test_epub.py + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n autotest_unstructured/partition/test_epub.py .PHONY: test-extra-markdown test-extra-markdown: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/partition/test_md.py + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto test_unstructured/partition/test_md.py .PHONY: test-extra-odt test-extra-odt: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/partition/test_odt.py + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto test_unstructured/partition/test_odt.py .PHONY: test-extra-pdf-image test-extra-pdf-image: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/partition/pdf_image + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto test_unstructured/partition/pdf_image .PHONY: test-extra-pptx test-extra-pptx: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest \ + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto \ test_unstructured/partition/test_ppt.py \ test_unstructured/partition/test_pptx.py .PHONY: test-extra-pypandoc test-extra-pypandoc: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest \ + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto \ test_unstructured/partition/test_org.py \ test_unstructured/partition/test_rst.py \ test_unstructured/partition/test_rtf.py .PHONY: test-extra-xlsx test-extra-xlsx: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/partition/test_xlsx.py + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto test_unstructured/partition/test_xlsx.py .PHONY: test-text-extraction-evaluate test-text-extraction-evaluate: - PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest test_unstructured/metrics/test_text_extraction.py + PYTHONPATH=. CI=$(CI) ${PYTHON} -m pytest -n auto test_unstructured/metrics/test_text_extraction.py ## check: runs linters (includes tests) .PHONY: check diff --git a/requirements/test.in b/requirements/test.in index e9b8fadbf8..3bf9c5edf3 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -10,6 +10,7 @@ mypy pydantic pytest-cov pytest-mock +pytest-xdist ruff types-Markdown types-requests diff --git a/requirements/test.txt b/requirements/test.txt index 7aba185049..03eb310eb6 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -2,56 +2,202 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile ./test.in +# pip-compile --output-file=requirements/test.txt requirements/base.txt requirements/test.in # annotated-types==0.7.0 # via pydantic +anyio==4.9.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # httpx autoflake==2.3.1 - # via -r ./test.in + # via -r requirements/test.in +backoff==2.2.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt +beautifulsoup4==4.13.4 + # via + # -c requirements/base.txt + # -r requirements/base.txt black==25.1.0 - # via -r ./test.in + # via -r requirements/test.in +certifi==2025.4.26 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # httpcore + # httpx + # requests + # unstructured-client +cffi==1.17.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # cryptography +chardet==5.2.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +charset-normalizer==3.4.2 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # requests + # unstructured-client click==8.2.1 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt # black + # nltk + # python-oxmsg coverage[toml]==7.8.2 # via - # -r ./test.in + # -r requirements/test.in # pytest-cov +cryptography==45.0.4 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +dataclasses-json==0.6.7 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +deepdiff==8.5.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +emoji==2.14.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt exceptiongroup==1.3.0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt + # anyio # pytest +execnet==2.1.1 + # via pytest-xdist +filetype==1.2.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt flake8==7.2.0 # via - # -r ./test.in + # -r requirements/test.in # flake8-print flake8-print==5.0.0 - # via -r ./test.in + # via -r requirements/test.in freezegun==1.5.2 - # via -r ./test.in + # via -r requirements/test.in grpcio==1.73.0 # via - # -c ./deps/constraints.txt - # -r ./test.in + # -c requirements/./deps/constraints.txt + # -r requirements/test.in +h11==0.16.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # httpcore +html5lib==1.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt +httpcore==1.0.9 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # httpx +httpx==0.28.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +idna==3.10 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # anyio + # httpx + # requests + # unstructured-client iniconfig==2.1.0 # via pytest +joblib==1.5.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # nltk +jsonpath-python==1.0.6 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +langdetect==1.0.9 + # via + # -c requirements/base.txt + # -r requirements/base.txt liccheck==0.9.2 - # via -r ./test.in + # via -r requirements/test.in +lxml==5.4.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +marshmallow==3.26.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # dataclasses-json + # unstructured-client mccabe==0.7.0 # via flake8 mypy==1.16.0 - # via -r ./test.in + # via -r requirements/test.in mypy-extensions==1.1.0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt # black # mypy + # typing-inspect + # unstructured-client +nest-asyncio==1.6.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client +nltk==3.9.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt +numpy==2.2.6 + # via + # -c requirements/base.txt + # -r requirements/base.txt +olefile==0.47 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # python-oxmsg +orderly-set==5.4.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # deepdiff packaging==25.0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt # black + # marshmallow # pytest + # unstructured-client pathspec==0.12.1 # via # black @@ -60,12 +206,21 @@ platformdirs==4.3.8 # via black pluggy==1.6.0 # via pytest +psutil==7.0.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt pycodestyle==2.13.0 # via # flake8 # flake8-print +pycparser==2.22 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # cffi pydantic==2.11.5 - # via -r ./test.in + # via -r requirements/test.in pydantic-core==2.33.2 # via pydantic pyflakes==3.3.2 @@ -74,26 +229,82 @@ pyflakes==3.3.2 # flake8 pygments==2.19.1 # via pytest +pypdf==5.6.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client pytest==8.4.0 # via # pytest-cov # pytest-mock + # pytest-xdist pytest-cov==6.1.1 - # via -r ./test.in + # via -r requirements/test.in pytest-mock==3.14.1 - # via -r ./test.in + # via -r requirements/test.in +pytest-xdist==3.7.0 + # via -r requirements/test.in python-dateutil==2.9.0.post0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt # freezegun + # unstructured-client +python-iso639==2025.2.18 + # via + # -c requirements/base.txt + # -r requirements/base.txt +python-magic==0.4.27 + # via + # -c requirements/base.txt + # -r requirements/base.txt +python-oxmsg==0.0.2 + # via + # -c requirements/base.txt + # -r requirements/base.txt +rapidfuzz==3.13.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt +regex==2024.11.6 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # nltk +requests==2.32.4 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # requests-toolbelt + # unstructured-client +requests-toolbelt==1.0.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # unstructured-client ruff==0.11.13 - # via -r ./test.in + # via -r requirements/test.in semantic-version==2.10.0 # via liccheck six==1.17.0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt + # html5lib + # langdetect # python-dateutil + # unstructured-client +sniffio==1.3.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # anyio +soupsieve==2.7 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # beautifulsoup4 toml==0.10.2 # via liccheck tomli==2.2.1 @@ -103,27 +314,62 @@ tomli==2.2.1 # coverage # mypy # pytest +tqdm==4.67.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # nltk types-click==7.1.8 - # via -r ./test.in + # via -r requirements/test.in types-markdown==3.8.0.20250415 - # via -r ./test.in + # via -r requirements/test.in types-requests==2.32.4.20250611 - # via -r ./test.in + # via -r requirements/test.in types-tabulate==0.9.0.20241207 - # via -r ./test.in + # via -r requirements/test.in typing-extensions==4.14.0 # via - # -c ./base.txt + # -c requirements/base.txt + # -r requirements/base.txt + # anyio + # beautifulsoup4 # black # exceptiongroup # mypy # pydantic # pydantic-core + # pypdf + # python-oxmsg + # typing-inspect # typing-inspection + # unstructured-client +typing-inspect==0.9.0 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # dataclasses-json + # unstructured-client typing-inspection==0.4.1 # via pydantic +unstructured-client==0.25.9 + # via + # -c requirements/./deps/constraints.txt + # -c requirements/base.txt + # -r requirements/base.txt urllib3==2.4.0 # via - # -c ./base.txt - # -c ./deps/constraints.txt + # -c requirements/./deps/constraints.txt + # -c requirements/base.txt + # -r requirements/base.txt + # requests # types-requests + # unstructured-client +webencodings==0.5.1 + # via + # -c requirements/base.txt + # -r requirements/base.txt + # html5lib +wrapt==1.17.2 + # via + # -c requirements/base.txt + # -r requirements/base.txt