cas-parser-python 1.1.0__tar.gz → 1.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. cas_parser_python-1.2.1/.release-please-manifest.json +3 -0
  2. cas_parser_python-1.2.1/CHANGELOG.md +94 -0
  3. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/LICENSE +1 -1
  4. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/PKG-INFO +17 -7
  5. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/README.md +13 -3
  6. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/api.md +0 -12
  7. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/pyproject.toml +19 -13
  8. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/requirements-dev.lock +65 -50
  9. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/requirements.lock +23 -19
  10. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/__init__.py +3 -1
  11. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_base_client.py +154 -22
  12. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_client.py +75 -35
  13. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_compat.py +3 -3
  14. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_models.py +62 -19
  15. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_qs.py +7 -7
  16. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_streaming.py +12 -12
  17. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_types.py +30 -13
  18. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_compat.py +1 -1
  19. cas_parser_python-1.2.1/src/cas_parser/_utils/_json.py +35 -0
  20. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_sync.py +3 -31
  21. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_transform.py +2 -2
  22. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_utils.py +5 -5
  23. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_version.py +1 -1
  24. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/resources/__init__.py +0 -14
  25. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/resources/cas_parser.py +49 -49
  26. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/types/__init__.py +0 -2
  27. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/types/cas_parser_cams_kfintech_params.py +2 -2
  28. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/types/cas_parser_cdsl_params.py +2 -2
  29. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/types/cas_parser_nsdl_params.py +2 -2
  30. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/types/cas_parser_smart_parse_params.py +2 -2
  31. cas_parser_python-1.2.1/src/cas_parser/types/unified_response.py +1084 -0
  32. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_client.py +383 -166
  33. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_models.py +4 -4
  34. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_transform.py +9 -2
  35. cas_parser_python-1.2.1/tests/test_utils/test_json.py +126 -0
  36. cas_parser_python-1.1.0/.release-please-manifest.json +0 -3
  37. cas_parser_python-1.1.0/CHANGELOG.md +0 -55
  38. cas_parser_python-1.1.0/src/cas_parser/resources/cas_generator.py +0 -225
  39. cas_parser_python-1.1.0/src/cas_parser/types/cas_generator_generate_cas_params.py +0 -30
  40. cas_parser_python-1.1.0/src/cas_parser/types/cas_generator_generate_cas_response.py +0 -13
  41. cas_parser_python-1.1.0/src/cas_parser/types/unified_response.py +0 -432
  42. cas_parser_python-1.1.0/tests/api_resources/test_cas_generator.py +0 -136
  43. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/.gitignore +0 -0
  44. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/CONTRIBUTING.md +0 -0
  45. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/SECURITY.md +0 -0
  46. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/bin/check-release-environment +0 -0
  47. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/bin/publish-pypi +0 -0
  48. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/examples/.keep +0 -0
  49. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/noxfile.py +0 -0
  50. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/release-please-config.json +0 -0
  51. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_constants.py +0 -0
  52. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_exceptions.py +0 -0
  53. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_files.py +0 -0
  54. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_resource.py +0 -0
  55. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_response.py +0 -0
  56. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/__init__.py +0 -0
  57. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_datetime_parse.py +0 -0
  58. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_logs.py +0 -0
  59. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_proxy.py +0 -0
  60. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_reflection.py +0 -0
  61. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_resources_proxy.py +0 -0
  62. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_streams.py +0 -0
  63. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/_utils/_typing.py +0 -0
  64. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/lib/.keep +0 -0
  65. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/src/cas_parser/py.typed +0 -0
  66. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/__init__.py +0 -0
  67. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/api_resources/__init__.py +0 -0
  68. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/api_resources/test_cas_parser.py +0 -0
  69. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/conftest.py +0 -0
  70. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/sample_file.txt +0 -0
  71. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_deepcopy.py +0 -0
  72. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_extract_files.py +0 -0
  73. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_files.py +0 -0
  74. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_qs.py +0 -0
  75. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_required_args.py +0 -0
  76. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_response.py +0 -0
  77. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_streaming.py +0 -0
  78. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_utils/test_datetime_parse.py +0 -0
  79. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_utils/test_proxy.py +0 -0
  80. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/test_utils/test_typing.py +0 -0
  81. {cas_parser_python-1.1.0 → cas_parser_python-1.2.1}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.2.1"
3
+ }
@@ -0,0 +1,94 @@
1
+ # Changelog
2
+
3
+ ## 1.2.1 (2026-02-14)
4
+
5
+ Full Changelog: [v1.2.0...v1.2.1](https://github.com/CASParser/cas-parser-python/compare/v1.2.0...v1.2.1)
6
+
7
+ ### Chores
8
+
9
+ * update SDK settings ([0231f54](https://github.com/CASParser/cas-parser-python/commit/0231f540b484945a3bbc5d023a11197913e56642))
10
+
11
+ ## 1.2.0 (2026-02-03)
12
+
13
+ Full Changelog: [v1.1.0...v1.2.0](https://github.com/CASParser/cas-parser-python/compare/v1.1.0...v1.2.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([bce15d3](https://github.com/CASParser/cas-parser-python/commit/bce15d3f55a18db8d0c6447b6537fbdf831a5816))
18
+ * **api:** api update ([c265056](https://github.com/CASParser/cas-parser-python/commit/c265056c6b8f5b346172d89e9da82315976dc44f))
19
+ * **api:** api update ([93a9613](https://github.com/CASParser/cas-parser-python/commit/93a9613c79ec70869cf11dd0b9bac0a8c6194a31))
20
+ * **api:** api update ([bd6977a](https://github.com/CASParser/cas-parser-python/commit/bd6977a8a78c4a1633e4e6a1dc1d3335b1aa6611))
21
+ * **api:** api update ([3fda81d](https://github.com/CASParser/cas-parser-python/commit/3fda81deb938a9b689cbb04f839e3b815259a9c5))
22
+ * **api:** api update ([f1838dc](https://github.com/CASParser/cas-parser-python/commit/f1838dcb901635626cc87cb55dfaa4ef33ba5092))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **client:** close streams without requiring full consumption ([7090ef5](https://github.com/CASParser/cas-parser-python/commit/7090ef51af296fa6d6be8af8137543ef2023cbd7))
28
+
29
+
30
+ ### Chores
31
+
32
+ * bump `httpx-aiohttp` version to 0.1.9 ([e1b65fb](https://github.com/CASParser/cas-parser-python/commit/e1b65fb2bd146a68ef50438899406ae2fb6178c3))
33
+ * do not install brew dependencies in ./scripts/bootstrap by default ([35b17eb](https://github.com/CASParser/cas-parser-python/commit/35b17eb26264ab66e24b074bcb1790f6c33b7b9c))
34
+ * **internal/tests:** avoid race condition with implicit client cleanup ([2a58fc0](https://github.com/CASParser/cas-parser-python/commit/2a58fc0e260b52ee314ac6d14676b2140711bd0b))
35
+ * **internal:** codegen related update ([8e6c5b2](https://github.com/CASParser/cas-parser-python/commit/8e6c5b210e14602af113fa9fef5c789d6238419a))
36
+ * **internal:** codegen related update ([20bcea0](https://github.com/CASParser/cas-parser-python/commit/20bcea057ce1974149394c899581ed31ffb56a4a))
37
+ * **internal:** detect missing future annotations with ruff ([8c35489](https://github.com/CASParser/cas-parser-python/commit/8c354893c00887af1da9c197dc21dd4d6f0033af))
38
+ * **internal:** grammar fix (it's -> its) ([d2d29bc](https://github.com/CASParser/cas-parser-python/commit/d2d29bcc46989573e27c2178785c6b38df65bd90))
39
+ * **internal:** update pydantic dependency ([1c3104b](https://github.com/CASParser/cas-parser-python/commit/1c3104b27350f4c906973bb56f89d5a16f55d35e))
40
+ * **types:** change optional parameter type from NotGiven to Omit ([e739e12](https://github.com/CASParser/cas-parser-python/commit/e739e12ade4f91e52f0285c866354e970195aacf))
41
+
42
+ ## 1.1.0 (2025-09-06)
43
+
44
+ Full Changelog: [v1.0.2...v1.1.0](https://github.com/CASParser/cas-parser-python/compare/v1.0.2...v1.1.0)
45
+
46
+ ### Features
47
+
48
+ * improve future compat with pydantic v3 ([39d5f4a](https://github.com/CASParser/cas-parser-python/commit/39d5f4a6f631f01627f9e0ad3846431b2f36410d))
49
+ * **types:** replace List[str] with SequenceNotStr in params ([ffdac79](https://github.com/CASParser/cas-parser-python/commit/ffdac79d2ac8394afc09f540c6b89c01675946d9))
50
+
51
+
52
+ ### Chores
53
+
54
+ * **internal:** add Sequence related utils ([cffd684](https://github.com/CASParser/cas-parser-python/commit/cffd6844655dfe7f52a1c85140dc4ab2a370e8f7))
55
+ * **internal:** move mypy configurations to `pyproject.toml` file ([2f7e6bc](https://github.com/CASParser/cas-parser-python/commit/2f7e6bccf82f65c0b753a909654ba1ee7cc61157))
56
+ * **tests:** simplify `get_platform` test ([7c54665](https://github.com/CASParser/cas-parser-python/commit/7c546655385360b8ba97e20e79fbdedb43af07d5))
57
+
58
+ ## 1.0.2 (2025-08-27)
59
+
60
+ Full Changelog: [v1.0.1...v1.0.2](https://github.com/CASParser/cas-parser-python/compare/v1.0.1...v1.0.2)
61
+
62
+ ### Bug Fixes
63
+
64
+ * avoid newer type syntax ([2ad1ea6](https://github.com/CASParser/cas-parser-python/commit/2ad1ea633d5c9d69de09045f97968aa961ccc6f3))
65
+
66
+
67
+ ### Chores
68
+
69
+ * **internal:** change ci workflow machines ([f38494c](https://github.com/CASParser/cas-parser-python/commit/f38494c9f9f0df5069d8dd1ff23728a47f0e934c))
70
+ * **internal:** update pyright exclude list ([d3f9237](https://github.com/CASParser/cas-parser-python/commit/d3f9237f030f0087d0f92741836aa8674d9b5287))
71
+ * update github action ([83a551a](https://github.com/CASParser/cas-parser-python/commit/83a551a025d281efa4edaa89a9e4daed0f8aaa8e))
72
+
73
+ ## 1.0.1 (2025-08-18)
74
+
75
+ Full Changelog: [v1.0.0...v1.0.1](https://github.com/CASParser/cas-parser-python/compare/v1.0.0...v1.0.1)
76
+
77
+ ### Chores
78
+
79
+ * update SDK settings ([83e97ee](https://github.com/CASParser/cas-parser-python/commit/83e97eef5fe5c02d181c8eeea271f661cd4b8830))
80
+
81
+ ## 1.0.0 (2025-08-18)
82
+
83
+ Full Changelog: [v0.0.1...v1.0.0](https://github.com/CASParser/cas-parser-python/compare/v0.0.1...v1.0.0)
84
+
85
+ ### Features
86
+
87
+ * **api:** manual updates ([635bd26](https://github.com/CASParser/cas-parser-python/commit/635bd26431623f00d3af06a3256c2b7085c83487))
88
+
89
+
90
+ ### Chores
91
+
92
+ * configure new SDK language ([5748dab](https://github.com/CASParser/cas-parser-python/commit/5748dab8b8241dc537456d9b8c1dae3c0e4a5d5a))
93
+ * update SDK settings ([13b5c47](https://github.com/CASParser/cas-parser-python/commit/13b5c470a31ac72d95078236e0e16b76e753939e))
94
+ * update SDK settings ([25126eb](https://github.com/CASParser/cas-parser-python/commit/25126eb2330f0e84bd4dd9e814e6a2e5b2ebbddc))
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2025 Cas Parser
189
+ Copyright 2026 Cas Parser
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: cas-parser-python
3
- Version: 1.1.0
3
+ Version: 1.2.1
4
4
  Summary: The official Python library for the CAS Parser API
5
5
  Project-URL: Homepage, https://github.com/CASParser/cas-parser-python
6
6
  Project-URL: Repository, https://github.com/CASParser/cas-parser-python
@@ -13,15 +13,15 @@ Classifier: Operating System :: Microsoft :: Windows
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Operating System :: POSIX
15
15
  Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Programming Language :: Python :: 3.8
17
16
  Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
21
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Classifier: Typing :: Typed
24
- Requires-Python: >=3.8
24
+ Requires-Python: >=3.9
25
25
  Requires-Dist: anyio<5,>=3.5.0
26
26
  Requires-Dist: distro<2,>=1.7.0
27
27
  Requires-Dist: httpx<1,>=0.23.0
@@ -30,7 +30,7 @@ Requires-Dist: sniffio
30
30
  Requires-Dist: typing-extensions<5,>=4.10
31
31
  Provides-Extra: aiohttp
32
32
  Requires-Dist: aiohttp; extra == 'aiohttp'
33
- Requires-Dist: httpx-aiohttp>=0.1.8; extra == 'aiohttp'
33
+ Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
34
34
  Description-Content-Type: text/markdown
35
35
 
36
36
  # Cas Parser Python API library
@@ -38,12 +38,21 @@ Description-Content-Type: text/markdown
38
38
  <!-- prettier-ignore -->
39
39
  [![PyPI version](https://img.shields.io/pypi/v/cas-parser-python.svg?label=pypi%20(stable))](https://pypi.org/project/cas-parser-python/)
40
40
 
41
- The Cas Parser Python library provides convenient access to the Cas Parser REST API from any Python 3.8+
41
+ The Cas Parser Python library provides convenient access to the Cas Parser REST API from any Python 3.9+
42
42
  application. The library includes type definitions for all request params and response fields,
43
43
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
44
44
 
45
45
  It is generated with [Stainless](https://www.stainless.com/).
46
46
 
47
+ ## MCP Server
48
+
49
+ 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.
50
+
51
+ [![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)
52
+ [![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)
53
+
54
+ > Note: You may need to set environment variables in your MCP client.
55
+
47
56
  ## Documentation
48
57
 
49
58
  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](https://github.com/CASParser/cas-parser-python/tree/main/api.md).
@@ -120,6 +129,7 @@ pip install cas-parser-python[aiohttp]
120
129
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
121
130
 
122
131
  ```python
132
+ import os
123
133
  import asyncio
124
134
  from cas_parser import DefaultAioHttpClient
125
135
  from cas_parser import AsyncCasParser
@@ -127,7 +137,7 @@ from cas_parser import AsyncCasParser
127
137
 
128
138
  async def main() -> None:
129
139
  async with AsyncCasParser(
130
- api_key="My API Key",
140
+ api_key=os.environ.get("CAS_PARSER_API_KEY"), # This is the default and can be omitted
131
141
  http_client=DefaultAioHttpClient(),
132
142
  ) as client:
133
143
  unified_response = await client.cas_parser.smart_parse(
@@ -415,7 +425,7 @@ print(cas_parser.__version__)
415
425
 
416
426
  ## Requirements
417
427
 
418
- Python 3.8 or higher.
428
+ Python 3.9 or higher.
419
429
 
420
430
  ## Contributing
421
431
 
@@ -3,12 +3,21 @@
3
3
  <!-- prettier-ignore -->
4
4
  [![PyPI version](https://img.shields.io/pypi/v/cas-parser-python.svg?label=pypi%20(stable))](https://pypi.org/project/cas-parser-python/)
5
5
 
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+
7
7
  application. The library includes type definitions for all request params and response fields,
8
8
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
9
9
 
10
10
  It is generated with [Stainless](https://www.stainless.com/).
11
11
 
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
+
12
21
  ## Documentation
13
22
 
14
23
  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,6 +94,7 @@ pip install cas-parser-python[aiohttp]
85
94
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
86
95
 
87
96
  ```python
97
+ import os
88
98
  import asyncio
89
99
  from cas_parser import DefaultAioHttpClient
90
100
  from cas_parser import AsyncCasParser
@@ -92,7 +102,7 @@ from cas_parser import AsyncCasParser
92
102
 
93
103
  async def main() -> None:
94
104
  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
96
106
  http_client=DefaultAioHttpClient(),
97
107
  ) as client:
98
108
  unified_response = await client.cas_parser.smart_parse(
@@ -380,7 +390,7 @@ print(cas_parser.__version__)
380
390
 
381
391
  ## Requirements
382
392
 
383
- Python 3.8 or higher.
393
+ Python 3.9 or higher.
384
394
 
385
395
  ## Contributing
386
396
 
@@ -12,15 +12,3 @@ Methods:
12
12
  - <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>
13
13
  - <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>
14
14
  - <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>
@@ -1,30 +1,32 @@
1
1
  [project]
2
2
  name = "cas-parser-python"
3
- version = "1.1.0"
3
+ version = "1.2.1"
4
4
  description = "The official Python library for the CAS Parser API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
7
7
  authors = [
8
8
  { name = "Cas Parser", email = "sameer@casparser.in" },
9
9
  ]
10
+
10
11
  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",
17
18
  ]
18
- requires-python = ">= 3.8"
19
+
20
+ requires-python = ">= 3.9"
19
21
  classifiers = [
20
22
  "Typing :: Typed",
21
23
  "Intended Audience :: Developers",
22
- "Programming Language :: Python :: 3.8",
23
24
  "Programming Language :: Python :: 3.9",
24
25
  "Programming Language :: Python :: 3.10",
25
26
  "Programming Language :: Python :: 3.11",
26
27
  "Programming Language :: Python :: 3.12",
27
28
  "Programming Language :: Python :: 3.13",
29
+ "Programming Language :: Python :: 3.14",
28
30
  "Operating System :: OS Independent",
29
31
  "Operating System :: POSIX",
30
32
  "Operating System :: MacOS",
@@ -39,14 +41,14 @@ Homepage = "https://github.com/CASParser/cas-parser-python"
39
41
  Repository = "https://github.com/CASParser/cas-parser-python"
40
42
 
41
43
  [project.optional-dependencies]
42
- aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
44
+ aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
43
45
 
44
46
  [tool.rye]
45
47
  managed = true
46
48
  # version pins are in requirements-dev.lock
47
49
  dev-dependencies = [
48
50
  "pyright==1.1.399",
49
- "mypy",
51
+ "mypy==1.17",
50
52
  "respx",
51
53
  "pytest",
52
54
  "pytest-asyncio",
@@ -67,7 +69,7 @@ format = { chain = [
67
69
  # run formatting again to fix any inconsistencies when imports are stripped
68
70
  "format:ruff",
69
71
  ]}
70
- "format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
72
+ "format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'"
71
73
  "format:ruff" = "ruff format"
72
74
 
73
75
  "lint" = { chain = [
@@ -141,7 +143,7 @@ filterwarnings = [
141
143
  # there are a couple of flags that are still disabled by
142
144
  # default in strict mode as they are experimental and niche.
143
145
  typeCheckingMode = "strict"
144
- pythonVersion = "3.8"
146
+ pythonVersion = "3.9"
145
147
 
146
148
  exclude = [
147
149
  "_dev",
@@ -224,6 +226,8 @@ select = [
224
226
  "B",
225
227
  # remove unused imports
226
228
  "F401",
229
+ # check for missing future annotations
230
+ "FA102",
227
231
  # bare except statements
228
232
  "E722",
229
233
  # unused arguments
@@ -246,6 +250,8 @@ unfixable = [
246
250
  "T203",
247
251
  ]
248
252
 
253
+ extend-safe-fixes = ["FA102"]
254
+
249
255
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
250
256
  "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"
251
257
 
@@ -12,40 +12,45 @@
12
12
  -e file:.
13
13
  aiohappyeyeballs==2.6.1
14
14
  # via aiohttp
15
- aiohttp==3.12.8
15
+ aiohttp==3.13.3
16
16
  # via cas-parser-python
17
17
  # via httpx-aiohttp
18
- aiosignal==1.3.2
18
+ aiosignal==1.4.0
19
19
  # via aiohttp
20
- annotated-types==0.6.0
20
+ annotated-types==0.7.0
21
21
  # via pydantic
22
- anyio==4.4.0
22
+ anyio==4.12.1
23
23
  # via cas-parser-python
24
24
  # via httpx
25
- argcomplete==3.1.2
25
+ argcomplete==3.6.3
26
26
  # via nox
27
27
  async-timeout==5.0.1
28
28
  # via aiohttp
29
- attrs==25.3.0
29
+ attrs==25.4.0
30
30
  # via aiohttp
31
- certifi==2023.7.22
31
+ # via nox
32
+ backports-asyncio-runner==1.2.0
33
+ # via pytest-asyncio
34
+ certifi==2026.1.4
32
35
  # via httpcore
33
36
  # via httpx
34
- colorlog==6.7.0
37
+ colorlog==6.10.1
38
+ # via nox
39
+ dependency-groups==1.3.1
35
40
  # via nox
36
- dirty-equals==0.6.0
37
- distlib==0.3.7
41
+ dirty-equals==0.11
42
+ distlib==0.4.0
38
43
  # via virtualenv
39
- distro==1.8.0
44
+ distro==1.9.0
40
45
  # via cas-parser-python
41
- exceptiongroup==1.2.2
46
+ exceptiongroup==1.3.1
42
47
  # via anyio
43
48
  # via pytest
44
- execnet==2.1.1
49
+ execnet==2.1.2
45
50
  # via pytest-xdist
46
- filelock==3.12.4
51
+ filelock==3.19.1
47
52
  # via virtualenv
48
- frozenlist==1.6.2
53
+ frozenlist==1.8.0
49
54
  # via aiohttp
50
55
  # via aiosignal
51
56
  h11==0.16.0
@@ -56,79 +61,89 @@ httpx==0.28.1
56
61
  # via cas-parser-python
57
62
  # via httpx-aiohttp
58
63
  # via respx
59
- httpx-aiohttp==0.1.8
64
+ httpx-aiohttp==0.1.12
60
65
  # via cas-parser-python
61
- idna==3.4
66
+ humanize==4.13.0
67
+ # via nox
68
+ idna==3.11
62
69
  # via anyio
63
70
  # via httpx
64
71
  # via yarl
65
- importlib-metadata==7.0.0
66
- iniconfig==2.0.0
72
+ importlib-metadata==8.7.1
73
+ iniconfig==2.1.0
67
74
  # via pytest
68
75
  markdown-it-py==3.0.0
69
76
  # via rich
70
77
  mdurl==0.1.2
71
78
  # via markdown-it-py
72
- multidict==6.4.4
79
+ multidict==6.7.0
73
80
  # via aiohttp
74
81
  # via yarl
75
- mypy==1.14.1
76
- mypy-extensions==1.0.0
82
+ mypy==1.17.0
83
+ mypy-extensions==1.1.0
77
84
  # via mypy
78
- nodeenv==1.8.0
85
+ nodeenv==1.10.0
79
86
  # via pyright
80
- nox==2023.4.22
81
- packaging==23.2
87
+ nox==2025.11.12
88
+ packaging==25.0
89
+ # via dependency-groups
82
90
  # via nox
83
91
  # via pytest
84
- platformdirs==3.11.0
92
+ pathspec==1.0.3
93
+ # via mypy
94
+ platformdirs==4.4.0
85
95
  # via virtualenv
86
- pluggy==1.5.0
96
+ pluggy==1.6.0
87
97
  # via pytest
88
- propcache==0.3.1
98
+ propcache==0.4.1
89
99
  # via aiohttp
90
100
  # via yarl
91
- pydantic==2.10.3
101
+ pydantic==2.12.5
92
102
  # via cas-parser-python
93
- pydantic-core==2.27.1
103
+ pydantic-core==2.41.5
94
104
  # via pydantic
95
- pygments==2.18.0
105
+ pygments==2.19.2
106
+ # via pytest
96
107
  # via rich
97
108
  pyright==1.1.399
98
- pytest==8.3.3
109
+ pytest==8.4.2
99
110
  # via pytest-asyncio
100
111
  # via pytest-xdist
101
- pytest-asyncio==0.24.0
102
- pytest-xdist==3.7.0
103
- python-dateutil==2.8.2
112
+ pytest-asyncio==1.2.0
113
+ pytest-xdist==3.8.0
114
+ python-dateutil==2.9.0.post0
104
115
  # via time-machine
105
- pytz==2023.3.post1
106
- # via dirty-equals
107
116
  respx==0.22.0
108
- rich==13.7.1
109
- ruff==0.9.4
110
- setuptools==68.2.2
111
- # via nodeenv
112
- six==1.16.0
117
+ rich==14.2.0
118
+ ruff==0.14.13
119
+ six==1.17.0
113
120
  # via python-dateutil
114
- sniffio==1.3.0
115
- # via anyio
121
+ sniffio==1.3.1
116
122
  # via cas-parser-python
117
- time-machine==2.9.0
118
- tomli==2.0.2
123
+ time-machine==2.19.0
124
+ tomli==2.4.0
125
+ # via dependency-groups
119
126
  # via mypy
127
+ # via nox
120
128
  # via pytest
121
- typing-extensions==4.12.2
129
+ typing-extensions==4.15.0
130
+ # via aiosignal
122
131
  # via anyio
123
132
  # via cas-parser-python
133
+ # via exceptiongroup
124
134
  # via multidict
125
135
  # via mypy
126
136
  # via pydantic
127
137
  # via pydantic-core
128
138
  # via pyright
129
- virtualenv==20.24.5
139
+ # via pytest-asyncio
140
+ # via typing-inspection
141
+ # via virtualenv
142
+ typing-inspection==0.4.2
143
+ # via pydantic
144
+ virtualenv==20.36.1
130
145
  # via nox
131
- yarl==1.20.0
146
+ yarl==1.22.0
132
147
  # via aiohttp
133
- zipp==3.17.0
148
+ zipp==3.23.0
134
149
  # via importlib-metadata
@@ -12,28 +12,28 @@
12
12
  -e file:.
13
13
  aiohappyeyeballs==2.6.1
14
14
  # via aiohttp
15
- aiohttp==3.12.8
15
+ aiohttp==3.13.3
16
16
  # via cas-parser-python
17
17
  # via httpx-aiohttp
18
- aiosignal==1.3.2
18
+ aiosignal==1.4.0
19
19
  # via aiohttp
20
- annotated-types==0.6.0
20
+ annotated-types==0.7.0
21
21
  # via pydantic
22
- anyio==4.4.0
22
+ anyio==4.12.1
23
23
  # via cas-parser-python
24
24
  # via httpx
25
25
  async-timeout==5.0.1
26
26
  # via aiohttp
27
- attrs==25.3.0
27
+ attrs==25.4.0
28
28
  # via aiohttp
29
- certifi==2023.7.22
29
+ certifi==2026.1.4
30
30
  # via httpcore
31
31
  # via httpx
32
- distro==1.8.0
32
+ distro==1.9.0
33
33
  # via cas-parser-python
34
- exceptiongroup==1.2.2
34
+ exceptiongroup==1.3.1
35
35
  # via anyio
36
- frozenlist==1.6.2
36
+ frozenlist==1.8.0
37
37
  # via aiohttp
38
38
  # via aiosignal
39
39
  h11==0.16.0
@@ -43,30 +43,34 @@ httpcore==1.0.9
43
43
  httpx==0.28.1
44
44
  # via cas-parser-python
45
45
  # via httpx-aiohttp
46
- httpx-aiohttp==0.1.8
46
+ httpx-aiohttp==0.1.12
47
47
  # via cas-parser-python
48
- idna==3.4
48
+ idna==3.11
49
49
  # via anyio
50
50
  # via httpx
51
51
  # via yarl
52
- multidict==6.4.4
52
+ multidict==6.7.0
53
53
  # via aiohttp
54
54
  # via yarl
55
- propcache==0.3.1
55
+ propcache==0.4.1
56
56
  # via aiohttp
57
57
  # via yarl
58
- pydantic==2.10.3
58
+ pydantic==2.12.5
59
59
  # via cas-parser-python
60
- pydantic-core==2.27.1
60
+ pydantic-core==2.41.5
61
61
  # via pydantic
62
- sniffio==1.3.0
63
- # via anyio
62
+ sniffio==1.3.1
64
63
  # via cas-parser-python
65
- typing-extensions==4.12.2
64
+ typing-extensions==4.15.0
65
+ # via aiosignal
66
66
  # via anyio
67
67
  # via cas-parser-python
68
+ # via exceptiongroup
68
69
  # via multidict
69
70
  # via pydantic
70
71
  # via pydantic-core
71
- yarl==1.20.0
72
+ # via typing-inspection
73
+ typing-inspection==0.4.2
74
+ # via pydantic
75
+ yarl==1.22.0
72
76
  # via aiohttp
@@ -3,7 +3,7 @@
3
3
  import typing as _t
4
4
 
5
5
  from . import types
6
- from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes
6
+ from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes, omit, not_given
7
7
  from ._utils import file_from_path
8
8
  from ._client import (
9
9
  Client,
@@ -48,7 +48,9 @@ __all__ = [
48
48
  "ProxiesTypes",
49
49
  "NotGiven",
50
50
  "NOT_GIVEN",
51
+ "not_given",
51
52
  "Omit",
53
+ "omit",
52
54
  "CasParserError",
53
55
  "APIError",
54
56
  "APIStatusError",