From cd6dd86c1305ade9a5fa01d256c77e80aa6569de Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:19:56 +0000 Subject: [PATCH 1/9] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index bd562c4..f861228 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 6 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/landingai%2Fade-eeb4eb7952abc58f1b28144dbc17bc42da3780cbf9b375436188cf654901bb6b.yml -openapi_spec_hash: fe28a7763c5d084a9251109581c52b81 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/landingai%2Fade-62ce42134d4beaf8300c08d6703701fbaaffb737caa58b62da0a1824a05290c1.yml +openapi_spec_hash: 0500c26b20a94ad551f5d5a647a011a8 config_hash: 43f45ffa1cb556d90dcef6d742ed239f From 3b901a19b473a390aa3c5eebba0d108358f0d856 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 01:27:38 +0000 Subject: [PATCH 2/9] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index f861228..1959193 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 6 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/landingai%2Fade-62ce42134d4beaf8300c08d6703701fbaaffb737caa58b62da0a1824a05290c1.yml openapi_spec_hash: 0500c26b20a94ad551f5d5a647a011a8 -config_hash: 43f45ffa1cb556d90dcef6d742ed239f +config_hash: e8101fd147c425cd30880ddf8e069e79 From bb7dcc2b53dc8e3a1cbb22fb0f93a4a08811700d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 04:53:36 +0000 Subject: [PATCH 3/9] chore: format all `api.md` files --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 612aa44..fe47f73 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,7 +69,7 @@ format = { chain = [ # run formatting again to fix any inconsistencies when imports are stripped "format:ruff", ]} -"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md" +"format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'" "format:ruff" = "ruff format" "lint" = { chain = [ From 2c7cadfa52019266d1ebf4569bc0efc3f8a0c93c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 19:33:14 +0000 Subject: [PATCH 4/9] feat(api): improve multipart openapispec improve multipart openapispec --- src/landingai_ade/_client.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/landingai_ade/_client.py b/src/landingai_ade/_client.py index ec37f1f..bb97692 100644 --- a/src/landingai_ade/_client.py +++ b/src/landingai_ade/_client.py @@ -291,7 +291,7 @@ def extract( self, *, schema: str, - markdown: Union[FileTypes, str, None] | Omit = omit, + markdown: Optional[str] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, save_to: str | Path | None = None, @@ -317,7 +317,7 @@ def extract( are extracted from the Markdown. The schema must be a valid JSON object and will be validated before processing the document. - markdown: The Markdown file or Markdown content to extract data from. + markdown: Markdown content to extract data from. markdown_url: The URL to the Markdown file to extract data from. @@ -472,7 +472,7 @@ def split( self, *, split_class: Iterable[client_split_params.SplitClass], - markdown: Union[FileTypes, str, None] | Omit = omit, + markdown: Optional[str] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, save_to: str | Path | None = None, @@ -497,7 +497,7 @@ def split( split_class: List of split classification options/configuration. Can be provided as JSON string in form data. - markdown: The Markdown file or Markdown content to split. + markdown: Markdown content to split. markdown_url: The URL to the Markdown file to split. @@ -749,7 +749,7 @@ async def extract( self, *, schema: str, - markdown: Union[FileTypes, str, None] | Omit = omit, + markdown: Optional[str] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -774,7 +774,7 @@ async def extract( are extracted from the Markdown. The schema must be a valid JSON object and will be validated before processing the document. - markdown: The Markdown file or Markdown content to extract data from. + markdown: Markdown content to extract data from. markdown_url: The URL to the Markdown file to extract data from. @@ -906,7 +906,7 @@ async def split( self, *, split_class: Iterable[client_split_params.SplitClass], - markdown: Union[FileTypes, str, None] | Omit = omit, + markdown: Optional[str] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -930,7 +930,7 @@ async def split( split_class: List of split classification options/configuration. Can be provided as JSON string in form data. - markdown: The Markdown file or Markdown content to split. + markdown: Markdown content to split. markdown_url: The URL to the Markdown file to split. @@ -953,10 +953,11 @@ async def split( } ) files = extract_files(cast(Mapping[str, object], body), paths=[["markdown"]]) - # It should be noted that the actual Content-Type header that will be - # sent to the server will contain a `boundary` parameter, e.g. - # multipart/form-data; boundary=---abc-- - extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} + if files: + # It should be noted that the actual Content-Type header that will be + # sent to the server will contain a `boundary` parameter, e.g. + # multipart/form-data; boundary=---abc-- + extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} return await self.post( "/v1/ade/split", body=await async_maybe_transform(body, client_split_params.ClientSplitParams), From de3eaf846c3b3c277ffc4d20b28a727ff2b88cab Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 19:10:31 +0000 Subject: [PATCH 5/9] codegen metadata From 7d3f8a3bbc4e9cf84d3e30559652d5cdf5004c4f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 19:12:52 +0000 Subject: [PATCH 6/9] feat(api): manual updates --- src/landingai_ade/_client.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/landingai_ade/_client.py b/src/landingai_ade/_client.py index bb97692..ec37f1f 100644 --- a/src/landingai_ade/_client.py +++ b/src/landingai_ade/_client.py @@ -291,7 +291,7 @@ def extract( self, *, schema: str, - markdown: Optional[str] | Omit = omit, + markdown: Union[FileTypes, str, None] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, save_to: str | Path | None = None, @@ -317,7 +317,7 @@ def extract( are extracted from the Markdown. The schema must be a valid JSON object and will be validated before processing the document. - markdown: Markdown content to extract data from. + markdown: The Markdown file or Markdown content to extract data from. markdown_url: The URL to the Markdown file to extract data from. @@ -472,7 +472,7 @@ def split( self, *, split_class: Iterable[client_split_params.SplitClass], - markdown: Optional[str] | Omit = omit, + markdown: Union[FileTypes, str, None] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, save_to: str | Path | None = None, @@ -497,7 +497,7 @@ def split( split_class: List of split classification options/configuration. Can be provided as JSON string in form data. - markdown: Markdown content to split. + markdown: The Markdown file or Markdown content to split. markdown_url: The URL to the Markdown file to split. @@ -749,7 +749,7 @@ async def extract( self, *, schema: str, - markdown: Optional[str] | Omit = omit, + markdown: Union[FileTypes, str, None] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -774,7 +774,7 @@ async def extract( are extracted from the Markdown. The schema must be a valid JSON object and will be validated before processing the document. - markdown: Markdown content to extract data from. + markdown: The Markdown file or Markdown content to extract data from. markdown_url: The URL to the Markdown file to extract data from. @@ -906,7 +906,7 @@ async def split( self, *, split_class: Iterable[client_split_params.SplitClass], - markdown: Optional[str] | Omit = omit, + markdown: Union[FileTypes, str, None] | Omit = omit, markdown_url: Optional[str] | Omit = omit, model: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -930,7 +930,7 @@ async def split( split_class: List of split classification options/configuration. Can be provided as JSON string in form data. - markdown: Markdown content to split. + markdown: The Markdown file or Markdown content to split. markdown_url: The URL to the Markdown file to split. @@ -953,11 +953,10 @@ async def split( } ) files = extract_files(cast(Mapping[str, object], body), paths=[["markdown"]]) - if files: - # It should be noted that the actual Content-Type header that will be - # sent to the server will contain a `boundary` parameter, e.g. - # multipart/form-data; boundary=---abc-- - extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} + # It should be noted that the actual Content-Type header that will be + # sent to the server will contain a `boundary` parameter, e.g. + # multipart/form-data; boundary=---abc-- + extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} return await self.post( "/v1/ade/split", body=await async_maybe_transform(body, client_split_params.ClientSplitParams), From 78be66f42f256ebeb48012092913bb6aa5643920 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 06:37:53 +0000 Subject: [PATCH 7/9] chore(internal): remove mock server code --- scripts/mock | 41 ----------------------------------------- scripts/test | 46 ---------------------------------------------- 2 files changed, 87 deletions(-) delete mode 100755 scripts/mock diff --git a/scripts/mock b/scripts/mock deleted file mode 100755 index 0b28f6e..0000000 --- a/scripts/mock +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -set -e - -cd "$(dirname "$0")/.." - -if [[ -n "$1" && "$1" != '--'* ]]; then - URL="$1" - shift -else - URL="$(grep 'openapi_spec_url' .stats.yml | cut -d' ' -f2)" -fi - -# Check if the URL is empty -if [ -z "$URL" ]; then - echo "Error: No OpenAPI spec path/url provided or found in .stats.yml" - exit 1 -fi - -echo "==> Starting mock server with URL ${URL}" - -# Run prism mock on the given spec -if [ "$1" == "--daemon" ]; then - npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" &> .prism.log & - - # Wait for server to come online - echo -n "Waiting for server" - while ! grep -q "✖ fatal\|Prism is listening" ".prism.log" ; do - echo -n "." - sleep 0.1 - done - - if grep -q "✖ fatal" ".prism.log"; then - cat .prism.log - exit 1 - fi - - echo -else - npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" -fi diff --git a/scripts/test b/scripts/test index dbeda2d..39729d0 100755 --- a/scripts/test +++ b/scripts/test @@ -4,53 +4,7 @@ set -e cd "$(dirname "$0")/.." -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[0;33m' -NC='\033[0m' # No Color -function prism_is_running() { - curl --silent "http://localhost:4010" >/dev/null 2>&1 -} - -kill_server_on_port() { - pids=$(lsof -t -i tcp:"$1" || echo "") - if [ "$pids" != "" ]; then - kill "$pids" - echo "Stopped $pids." - fi -} - -function is_overriding_api_base_url() { - [ -n "$TEST_API_BASE_URL" ] -} - -if ! is_overriding_api_base_url && ! prism_is_running ; then - # When we exit this script, make sure to kill the background mock server process - trap 'kill_server_on_port 4010' EXIT - - # Start the dev server - ./scripts/mock --daemon -fi - -if is_overriding_api_base_url ; then - echo -e "${GREEN}✔ Running tests against ${TEST_API_BASE_URL}${NC}" - echo -elif ! prism_is_running ; then - echo -e "${RED}ERROR:${NC} The test suite will not run without a mock Prism server" - echo -e "running against your OpenAPI spec." - echo - echo -e "To run the server, pass in the path or url of your OpenAPI" - echo -e "spec to the prism command:" - echo - echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}" - echo - - exit 1 -else - echo -e "${GREEN}✔ Mock prism server is running with your OpenAPI spec${NC}" - echo -fi export DEFER_PYDANTIC_BUILD=false From ad39f4805421843d4f73b24748226c11e764543f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 06:38:30 +0000 Subject: [PATCH 8/9] chore: update mock server docs --- CONTRIBUTING.md | 7 ---- tests/api_resources/test_client.py | 48 +++++++++++++------------- tests/api_resources/test_parse_jobs.py | 48 +++++++++++++------------- 3 files changed, 48 insertions(+), 55 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f679b3..13dff52 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,13 +85,6 @@ $ pip install ./path-to-wheel-file.whl ## Running tests -Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests. - -```sh -# you will need npm installed -$ npx prism mock path/to/your/openapi.yml -``` - ```sh $ ./scripts/test ``` diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py index 8c9f034..de96939 100644 --- a/tests/api_resources/test_client.py +++ b/tests/api_resources/test_client.py @@ -21,7 +21,7 @@ class TestClient: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_extract(self, client: LandingAIADE) -> None: client_ = client.extract( @@ -29,7 +29,7 @@ def test_method_extract(self, client: LandingAIADE) -> None: ) assert_matches_type(ExtractResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_extract_with_all_params(self, client: LandingAIADE) -> None: client_ = client.extract( @@ -40,7 +40,7 @@ def test_method_extract_with_all_params(self, client: LandingAIADE) -> None: ) assert_matches_type(ExtractResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_extract(self, client: LandingAIADE) -> None: response = client.with_raw_response.extract( @@ -52,7 +52,7 @@ def test_raw_response_extract(self, client: LandingAIADE) -> None: client_ = response.parse() assert_matches_type(ExtractResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_extract(self, client: LandingAIADE) -> None: with client.with_streaming_response.extract( @@ -66,13 +66,13 @@ def test_streaming_response_extract(self, client: LandingAIADE) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_parse(self, client: LandingAIADE) -> None: client_ = client.parse() assert_matches_type(ParseResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_parse_with_all_params(self, client: LandingAIADE) -> None: client_ = client.parse( @@ -83,7 +83,7 @@ def test_method_parse_with_all_params(self, client: LandingAIADE) -> None: ) assert_matches_type(ParseResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_parse(self, client: LandingAIADE) -> None: response = client.with_raw_response.parse() @@ -93,7 +93,7 @@ def test_raw_response_parse(self, client: LandingAIADE) -> None: client_ = response.parse() assert_matches_type(ParseResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_parse(self, client: LandingAIADE) -> None: with client.with_streaming_response.parse() as response: @@ -105,7 +105,7 @@ def test_streaming_response_parse(self, client: LandingAIADE) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_split(self, client: LandingAIADE) -> None: client_ = client.split( @@ -113,7 +113,7 @@ def test_method_split(self, client: LandingAIADE) -> None: ) assert_matches_type(SplitResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_split_with_all_params(self, client: LandingAIADE) -> None: client_ = client.split( @@ -130,7 +130,7 @@ def test_method_split_with_all_params(self, client: LandingAIADE) -> None: ) assert_matches_type(SplitResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_split(self, client: LandingAIADE) -> None: response = client.with_raw_response.split( @@ -142,7 +142,7 @@ def test_raw_response_split(self, client: LandingAIADE) -> None: client_ = response.parse() assert_matches_type(SplitResponse, client_, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_split(self, client: LandingAIADE) -> None: with client.with_streaming_response.split( @@ -162,7 +162,7 @@ class TestAsyncClient: "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] ) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_extract(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.extract( @@ -170,7 +170,7 @@ async def test_method_extract(self, async_client: AsyncLandingAIADE) -> None: ) assert_matches_type(ExtractResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_extract_with_all_params(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.extract( @@ -181,7 +181,7 @@ async def test_method_extract_with_all_params(self, async_client: AsyncLandingAI ) assert_matches_type(ExtractResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_extract(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.with_raw_response.extract( @@ -193,7 +193,7 @@ async def test_raw_response_extract(self, async_client: AsyncLandingAIADE) -> No client = await response.parse() assert_matches_type(ExtractResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_extract(self, async_client: AsyncLandingAIADE) -> None: async with async_client.with_streaming_response.extract( @@ -207,13 +207,13 @@ async def test_streaming_response_extract(self, async_client: AsyncLandingAIADE) assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_parse(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.parse() assert_matches_type(ParseResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_parse_with_all_params(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.parse( @@ -224,7 +224,7 @@ async def test_method_parse_with_all_params(self, async_client: AsyncLandingAIAD ) assert_matches_type(ParseResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_parse(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.with_raw_response.parse() @@ -234,7 +234,7 @@ async def test_raw_response_parse(self, async_client: AsyncLandingAIADE) -> None client = await response.parse() assert_matches_type(ParseResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_parse(self, async_client: AsyncLandingAIADE) -> None: async with async_client.with_streaming_response.parse() as response: @@ -246,7 +246,7 @@ async def test_streaming_response_parse(self, async_client: AsyncLandingAIADE) - assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_split(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.split( @@ -254,7 +254,7 @@ async def test_method_split(self, async_client: AsyncLandingAIADE) -> None: ) assert_matches_type(SplitResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_split_with_all_params(self, async_client: AsyncLandingAIADE) -> None: client = await async_client.split( @@ -271,7 +271,7 @@ async def test_method_split_with_all_params(self, async_client: AsyncLandingAIAD ) assert_matches_type(SplitResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_split(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.with_raw_response.split( @@ -283,7 +283,7 @@ async def test_raw_response_split(self, async_client: AsyncLandingAIADE) -> None client = await response.parse() assert_matches_type(SplitResponse, client, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_split(self, async_client: AsyncLandingAIADE) -> None: async with async_client.with_streaming_response.split( diff --git a/tests/api_resources/test_parse_jobs.py b/tests/api_resources/test_parse_jobs.py index 530a444..109def2 100644 --- a/tests/api_resources/test_parse_jobs.py +++ b/tests/api_resources/test_parse_jobs.py @@ -21,13 +21,13 @@ class TestParseJobs: parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_create(self, client: LandingAIADE) -> None: parse_job = client.parse_jobs.create() assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_create_with_all_params(self, client: LandingAIADE) -> None: parse_job = client.parse_jobs.create( @@ -39,7 +39,7 @@ def test_method_create_with_all_params(self, client: LandingAIADE) -> None: ) assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_create(self, client: LandingAIADE) -> None: response = client.parse_jobs.with_raw_response.create() @@ -49,7 +49,7 @@ def test_raw_response_create(self, client: LandingAIADE) -> None: parse_job = response.parse() assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_create(self, client: LandingAIADE) -> None: with client.parse_jobs.with_streaming_response.create() as response: @@ -61,13 +61,13 @@ def test_streaming_response_create(self, client: LandingAIADE) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list(self, client: LandingAIADE) -> None: parse_job = client.parse_jobs.list() assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_list_with_all_params(self, client: LandingAIADE) -> None: parse_job = client.parse_jobs.list( @@ -77,7 +77,7 @@ def test_method_list_with_all_params(self, client: LandingAIADE) -> None: ) assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_list(self, client: LandingAIADE) -> None: response = client.parse_jobs.with_raw_response.list() @@ -87,7 +87,7 @@ def test_raw_response_list(self, client: LandingAIADE) -> None: parse_job = response.parse() assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_list(self, client: LandingAIADE) -> None: with client.parse_jobs.with_streaming_response.list() as response: @@ -99,7 +99,7 @@ def test_streaming_response_list(self, client: LandingAIADE) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_get(self, client: LandingAIADE) -> None: parse_job = client.parse_jobs.get( @@ -107,7 +107,7 @@ def test_method_get(self, client: LandingAIADE) -> None: ) assert_matches_type(ParseJobGetResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_get(self, client: LandingAIADE) -> None: response = client.parse_jobs.with_raw_response.get( @@ -119,7 +119,7 @@ def test_raw_response_get(self, client: LandingAIADE) -> None: parse_job = response.parse() assert_matches_type(ParseJobGetResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_streaming_response_get(self, client: LandingAIADE) -> None: with client.parse_jobs.with_streaming_response.get( @@ -133,7 +133,7 @@ def test_streaming_response_get(self, client: LandingAIADE) -> None: assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_path_params_get(self, client: LandingAIADE) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): @@ -147,13 +147,13 @@ class TestAsyncParseJobs: "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] ) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_create(self, async_client: AsyncLandingAIADE) -> None: parse_job = await async_client.parse_jobs.create() assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_create_with_all_params(self, async_client: AsyncLandingAIADE) -> None: parse_job = await async_client.parse_jobs.create( @@ -165,7 +165,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncLandingAIA ) assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_create(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.parse_jobs.with_raw_response.create() @@ -175,7 +175,7 @@ async def test_raw_response_create(self, async_client: AsyncLandingAIADE) -> Non parse_job = await response.parse() assert_matches_type(ParseJobCreateResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_create(self, async_client: AsyncLandingAIADE) -> None: async with async_client.parse_jobs.with_streaming_response.create() as response: @@ -187,13 +187,13 @@ async def test_streaming_response_create(self, async_client: AsyncLandingAIADE) assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list(self, async_client: AsyncLandingAIADE) -> None: parse_job = await async_client.parse_jobs.list() assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_list_with_all_params(self, async_client: AsyncLandingAIADE) -> None: parse_job = await async_client.parse_jobs.list( @@ -203,7 +203,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncLandingAIADE ) assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_list(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.parse_jobs.with_raw_response.list() @@ -213,7 +213,7 @@ async def test_raw_response_list(self, async_client: AsyncLandingAIADE) -> None: parse_job = await response.parse() assert_matches_type(ParseJobListResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_list(self, async_client: AsyncLandingAIADE) -> None: async with async_client.parse_jobs.with_streaming_response.list() as response: @@ -225,7 +225,7 @@ async def test_streaming_response_list(self, async_client: AsyncLandingAIADE) -> assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_get(self, async_client: AsyncLandingAIADE) -> None: parse_job = await async_client.parse_jobs.get( @@ -233,7 +233,7 @@ async def test_method_get(self, async_client: AsyncLandingAIADE) -> None: ) assert_matches_type(ParseJobGetResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_get(self, async_client: AsyncLandingAIADE) -> None: response = await async_client.parse_jobs.with_raw_response.get( @@ -245,7 +245,7 @@ async def test_raw_response_get(self, async_client: AsyncLandingAIADE) -> None: parse_job = await response.parse() assert_matches_type(ParseJobGetResponse, parse_job, path=["response"]) - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_streaming_response_get(self, async_client: AsyncLandingAIADE) -> None: async with async_client.parse_jobs.with_streaming_response.get( @@ -259,7 +259,7 @@ async def test_streaming_response_get(self, async_client: AsyncLandingAIADE) -> assert cast(Any, response.is_closed) is True - @pytest.mark.skip(reason="Prism tests are disabled") + @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_path_params_get(self, async_client: AsyncLandingAIADE) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): From 7cf601f77a8538c088788a4a61e681f5870053e7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 06:38:46 +0000 Subject: [PATCH 9/9] release: 1.7.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ pyproject.toml | 2 +- src/landingai_ade/_version.py | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7deae33..cce9d1c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.0" + ".": "1.7.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 69c9dd2..1589630 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 1.7.0 (2026-02-20) + +Full Changelog: [v1.6.0...v1.7.0](https://github.com/landing-ai/ade-python/compare/v1.6.0...v1.7.0) + +### Features + +* **api:** improve multipart openapispec ([2c7cadf](https://github.com/landing-ai/ade-python/commit/2c7cadfa52019266d1ebf4569bc0efc3f8a0c93c)) +* **api:** manual updates ([7d3f8a3](https://github.com/landing-ai/ade-python/commit/7d3f8a3bbc4e9cf84d3e30559652d5cdf5004c4f)) + + +### Chores + +* format all `api.md` files ([bb7dcc2](https://github.com/landing-ai/ade-python/commit/bb7dcc2b53dc8e3a1cbb22fb0f93a4a08811700d)) +* **internal:** remove mock server code ([78be66f](https://github.com/landing-ai/ade-python/commit/78be66f42f256ebeb48012092913bb6aa5643920)) +* update mock server docs ([ad39f48](https://github.com/landing-ai/ade-python/commit/ad39f4805421843d4f73b24748226c11e764543f)) + ## 1.6.0 (2026-02-13) Full Changelog: [v1.5.0...v1.6.0](https://github.com/landing-ai/ade-python/compare/v1.5.0...v1.6.0) diff --git a/pyproject.toml b/pyproject.toml index fe47f73..3c801a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "landingai-ade" -version = "1.6.0" +version = "1.7.0" description = "The official Python library for the landingai-ade API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/landingai_ade/_version.py b/src/landingai_ade/_version.py index c74e67e..bc10bc2 100644 --- a/src/landingai_ade/_version.py +++ b/src/landingai_ade/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "landingai_ade" -__version__ = "1.6.0" # x-release-please-version +__version__ = "1.7.0" # x-release-please-version