Skip to content

Commit 2cc3f8d

Browse files
Merge pull request #6 from CASParser/release-please--branches--main--changes--next
release: 1.2.0
2 parents 9f78406 + 5ee9e43 commit 2cc3f8d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1823
-933
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
runs-on: ${{ github.repository == 'stainless-sdks/cas-parser-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
2020
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
2121
steps:
22-
- uses: actions/checkout@v4
22+
- uses: actions/checkout@v6
2323

2424
- name: Install Rye
2525
run: |
@@ -44,7 +44,7 @@ jobs:
4444
id-token: write
4545
runs-on: ${{ github.repository == 'stainless-sdks/cas-parser-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
4646
steps:
47-
- uses: actions/checkout@v4
47+
- uses: actions/checkout@v6
4848

4949
- name: Install Rye
5050
run: |
@@ -63,7 +63,7 @@ jobs:
6363
- name: Get GitHub OIDC Token
6464
if: github.repository == 'stainless-sdks/cas-parser-python'
6565
id: github-oidc
66-
uses: actions/github-script@v6
66+
uses: actions/github-script@v8
6767
with:
6868
script: core.setOutput('github_token', await core.getIDToken());
6969

@@ -81,7 +81,7 @@ jobs:
8181
runs-on: ${{ github.repository == 'stainless-sdks/cas-parser-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
8282
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
8383
steps:
84-
- uses: actions/checkout@v4
84+
- uses: actions/checkout@v6
8585

8686
- name: Install Rye
8787
run: |

.github/workflows/publish-pypi.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
- uses: actions/checkout@v4
17+
- uses: actions/checkout@v6
1818

1919
- name: Install Rye
2020
run: |

.github/workflows/release-doctor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
if: github.repository == 'CASParser/cas-parser-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
1313

1414
steps:
15-
- uses: actions/checkout@v4
15+
- uses: actions/checkout@v6
1616

1717
- name: Check release environment
1818
run: |

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.1.0"
2+
".": "1.2.0"
33
}

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 5
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cas-parser%2Fcas-parser-b7fdba3d3f97c7debc22c7ca30b828bce81bcd64648df8c94029b27a3321ebb9.yml
3-
openapi_spec_hash: 03f1315f1d32ada42445ca920f047dff
1+
configured_endpoints: 4
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cas-parser%2Fcas-parser-56b0f699c5437d9e5326626d35dfc972c17d01f12cb416c7f4854c8ea6d0e95e.yml
3+
openapi_spec_hash: 158f405c1880706266d83e6ff16b9d2f
44
config_hash: cb5d75abef6264b5d86448caf7295afa

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Changelog
22

3+
## 1.2.0 (2026-02-03)
4+
5+
Full Changelog: [v1.1.0...v1.2.0](https://github.com/CASParser/cas-parser-python/compare/v1.1.0...v1.2.0)
6+
7+
### Features
8+
9+
* **api:** api update ([bce15d3](https://github.com/CASParser/cas-parser-python/commit/bce15d3f55a18db8d0c6447b6537fbdf831a5816))
10+
* **api:** api update ([c265056](https://github.com/CASParser/cas-parser-python/commit/c265056c6b8f5b346172d89e9da82315976dc44f))
11+
* **api:** api update ([93a9613](https://github.com/CASParser/cas-parser-python/commit/93a9613c79ec70869cf11dd0b9bac0a8c6194a31))
12+
* **api:** api update ([bd6977a](https://github.com/CASParser/cas-parser-python/commit/bd6977a8a78c4a1633e4e6a1dc1d3335b1aa6611))
13+
* **api:** api update ([3fda81d](https://github.com/CASParser/cas-parser-python/commit/3fda81deb938a9b689cbb04f839e3b815259a9c5))
14+
* **api:** api update ([f1838dc](https://github.com/CASParser/cas-parser-python/commit/f1838dcb901635626cc87cb55dfaa4ef33ba5092))
15+
16+
17+
### Bug Fixes
18+
19+
* **client:** close streams without requiring full consumption ([7090ef5](https://github.com/CASParser/cas-parser-python/commit/7090ef51af296fa6d6be8af8137543ef2023cbd7))
20+
21+
22+
### Chores
23+
24+
* bump `httpx-aiohttp` version to 0.1.9 ([e1b65fb](https://github.com/CASParser/cas-parser-python/commit/e1b65fb2bd146a68ef50438899406ae2fb6178c3))
25+
* do not install brew dependencies in ./scripts/bootstrap by default ([35b17eb](https://github.com/CASParser/cas-parser-python/commit/35b17eb26264ab66e24b074bcb1790f6c33b7b9c))
26+
* **internal/tests:** avoid race condition with implicit client cleanup ([2a58fc0](https://github.com/CASParser/cas-parser-python/commit/2a58fc0e260b52ee314ac6d14676b2140711bd0b))
27+
* **internal:** codegen related update ([8e6c5b2](https://github.com/CASParser/cas-parser-python/commit/8e6c5b210e14602af113fa9fef5c789d6238419a))
28+
* **internal:** codegen related update ([20bcea0](https://github.com/CASParser/cas-parser-python/commit/20bcea057ce1974149394c899581ed31ffb56a4a))
29+
* **internal:** detect missing future annotations with ruff ([8c35489](https://github.com/CASParser/cas-parser-python/commit/8c354893c00887af1da9c197dc21dd4d6f0033af))
30+
* **internal:** grammar fix (it's -> its) ([d2d29bc](https://github.com/CASParser/cas-parser-python/commit/d2d29bcc46989573e27c2178785c6b38df65bd90))
31+
* **internal:** update pydantic dependency ([1c3104b](https://github.com/CASParser/cas-parser-python/commit/1c3104b27350f4c906973bb56f89d5a16f55d35e))
32+
* **types:** change optional parameter type from NotGiven to Omit ([e739e12](https://github.com/CASParser/cas-parser-python/commit/e739e12ade4f91e52f0285c866354e970195aacf))
33+
334
## 1.1.0 (2025-09-06)
435

536
Full Changelog: [v1.0.2...v1.1.0](https://github.com/CASParser/cas-parser-python/compare/v1.0.2...v1.1.0)

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright 2025 Cas Parser
189+
Copyright 2026 Cas Parser
190190

191191
Licensed under the Apache License, Version 2.0 (the "License");
192192
you may not use this file except in compliance with the License.

README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,21 @@
33
<!-- prettier-ignore -->
44
[![PyPI version](https://img.shields.io/pypi/v/cas-parser-python.svg?label=pypi%20(stable))](https://pypi.org/project/cas-parser-python/)
55

6-
The Cas Parser Python library provides convenient access to the Cas Parser REST API from any Python 3.8+
6+
The Cas Parser Python library provides convenient access to the Cas Parser REST API from any Python 3.9+
77
application. The library includes type definitions for all request params and response fields,
88
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
99

1010
It is generated with [Stainless](https://www.stainless.com/).
1111

12+
## MCP Server
13+
14+
Use the Cas Parser MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
15+
16+
[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=cas-parser-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNhcy1wYXJzZXItbm9kZS1tY3AiXSwiZW52Ijp7IkNBU19QQVJTRVJfQVBJX0tFWSI6Ik15IEFQSSBLZXkifX0)
17+
[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22cas-parser-node-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22cas-parser-node-mcp%22%5D%2C%22env%22%3A%7B%22CAS_PARSER_API_KEY%22%3A%22My%20API%20Key%22%7D%7D)
18+
19+
> Note: You may need to set environment variables in your MCP client.
20+
1221
## Documentation
1322

1423
The REST API documentation can be found on [docs.casparser.in](https://docs.casparser.in/reference). The full API of this library can be found in [api.md](api.md).
@@ -85,14 +94,15 @@ pip install cas-parser-python[aiohttp]
8594
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
8695

8796
```python
97+
import os
8898
import asyncio
8999
from cas_parser import DefaultAioHttpClient
90100
from cas_parser import AsyncCasParser
91101

92102

93103
async def main() -> None:
94104
async with AsyncCasParser(
95-
api_key="My API Key",
105+
api_key=os.environ.get("CAS_PARSER_API_KEY"), # This is the default and can be omitted
96106
http_client=DefaultAioHttpClient(),
97107
) as client:
98108
unified_response = await client.cas_parser.smart_parse(
@@ -380,7 +390,7 @@ print(cas_parser.__version__)
380390

381391
## Requirements
382392

383-
Python 3.8 or higher.
393+
Python 3.9 or higher.
384394

385395
## Contributing
386396

api.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,3 @@ Methods:
1212
- <code title="post /v4/cdsl/parse">client.cas_parser.<a href="./src/cas_parser/resources/cas_parser.py">cdsl</a>(\*\*<a href="src/cas_parser/types/cas_parser_cdsl_params.py">params</a>) -> <a href="./src/cas_parser/types/unified_response.py">UnifiedResponse</a></code>
1313
- <code title="post /v4/nsdl/parse">client.cas_parser.<a href="./src/cas_parser/resources/cas_parser.py">nsdl</a>(\*\*<a href="src/cas_parser/types/cas_parser_nsdl_params.py">params</a>) -> <a href="./src/cas_parser/types/unified_response.py">UnifiedResponse</a></code>
1414
- <code title="post /v4/smart/parse">client.cas_parser.<a href="./src/cas_parser/resources/cas_parser.py">smart_parse</a>(\*\*<a href="src/cas_parser/types/cas_parser_smart_parse_params.py">params</a>) -> <a href="./src/cas_parser/types/unified_response.py">UnifiedResponse</a></code>
15-
16-
# CasGenerator
17-
18-
Types:
19-
20-
```python
21-
from cas_parser.types import CasGeneratorGenerateCasResponse
22-
```
23-
24-
Methods:
25-
26-
- <code title="post /v4/generate">client.cas_generator.<a href="./src/cas_parser/resources/cas_generator.py">generate_cas</a>(\*\*<a href="src/cas_parser/types/cas_generator_generate_cas_params.py">params</a>) -> <a href="./src/cas_parser/types/cas_generator_generate_cas_response.py">CasGeneratorGenerateCasResponse</a></code>

pyproject.toml

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
11
[project]
22
name = "cas-parser-python"
3-
version = "1.1.0"
3+
version = "1.2.0"
44
description = "The official Python library for the CAS Parser API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"
77
authors = [
88
{ name = "Cas Parser", email = "sameer@casparser.in" },
99
]
10+
1011
dependencies = [
11-
"httpx>=0.23.0, <1",
12-
"pydantic>=1.9.0, <3",
13-
"typing-extensions>=4.10, <5",
14-
"anyio>=3.5.0, <5",
15-
"distro>=1.7.0, <2",
16-
"sniffio",
12+
"httpx>=0.23.0, <1",
13+
"pydantic>=1.9.0, <3",
14+
"typing-extensions>=4.10, <5",
15+
"anyio>=3.5.0, <5",
16+
"distro>=1.7.0, <2",
17+
"sniffio",
1718
]
18-
requires-python = ">= 3.8"
19+
20+
requires-python = ">= 3.9"
1921
classifiers = [
2022
"Typing :: Typed",
2123
"Intended Audience :: Developers",
22-
"Programming Language :: Python :: 3.8",
2324
"Programming Language :: Python :: 3.9",
2425
"Programming Language :: Python :: 3.10",
2526
"Programming Language :: Python :: 3.11",
2627
"Programming Language :: Python :: 3.12",
2728
"Programming Language :: Python :: 3.13",
29+
"Programming Language :: Python :: 3.14",
2830
"Operating System :: OS Independent",
2931
"Operating System :: POSIX",
3032
"Operating System :: MacOS",
@@ -39,14 +41,14 @@ Homepage = "https://github.com/CASParser/cas-parser-python"
3941
Repository = "https://github.com/CASParser/cas-parser-python"
4042

4143
[project.optional-dependencies]
42-
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
44+
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
4345

4446
[tool.rye]
4547
managed = true
4648
# version pins are in requirements-dev.lock
4749
dev-dependencies = [
4850
"pyright==1.1.399",
49-
"mypy",
51+
"mypy==1.17",
5052
"respx",
5153
"pytest",
5254
"pytest-asyncio",
@@ -141,7 +143,7 @@ filterwarnings = [
141143
# there are a couple of flags that are still disabled by
142144
# default in strict mode as they are experimental and niche.
143145
typeCheckingMode = "strict"
144-
pythonVersion = "3.8"
146+
pythonVersion = "3.9"
145147

146148
exclude = [
147149
"_dev",
@@ -224,6 +226,8 @@ select = [
224226
"B",
225227
# remove unused imports
226228
"F401",
229+
# check for missing future annotations
230+
"FA102",
227231
# bare except statements
228232
"E722",
229233
# unused arguments
@@ -246,6 +250,8 @@ unfixable = [
246250
"T203",
247251
]
248252

253+
extend-safe-fixes = ["FA102"]
254+
249255
[tool.ruff.lint.flake8-tidy-imports.banned-api]
250256
"functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
251257

0 commit comments

Comments
 (0)