liminal-sdk-python 2025.5.0__tar.gz → 2026.3.0b0__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 (27) hide show
  1. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/PKG-INFO +23 -23
  2. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/auth/__init__.py +1 -1
  3. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/auth/microsoft/device_code_flow.py +1 -1
  4. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/client.py +6 -7
  5. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/prompt/models.py +0 -4
  6. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/helpers/model.py +1 -1
  7. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/helpers/schema.py +1 -1
  8. liminal_sdk_python-2026.3.0b0/pyproject.toml +156 -0
  9. liminal_sdk_python-2025.5.0/pyproject.toml +0 -413
  10. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/LICENSE +0 -0
  11. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/README.md +0 -0
  12. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/__init__.py +0 -0
  13. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/auth/microsoft/__init__.py +0 -0
  14. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/auth/microsoft/models.py +0 -0
  15. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/const.py +0 -0
  16. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/__init__.py +0 -0
  17. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/llm/__init__.py +0 -0
  18. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/llm/models.py +0 -0
  19. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/llm/schemas.py +0 -0
  20. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/prompt/__init__.py +0 -0
  21. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/prompt/schemas.py +0 -0
  22. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/thread/__init__.py +0 -0
  23. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/thread/models.py +0 -0
  24. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/endpoints/thread/schemas.py +0 -0
  25. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/errors.py +0 -0
  26. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/helpers/__init__.py +0 -0
  27. {liminal_sdk_python-2025.5.0 → liminal_sdk_python-2026.3.0b0}/liminal/helpers/typing.py +0 -0
@@ -1,17 +1,18 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: liminal-sdk-python
3
- Version: 2025.5.0
3
+ Version: 2026.3.0b0
4
4
  Summary: The Liminal SDK for Python
5
- License: Apache-2.0
5
+ License-Expression: Apache-2.0
6
+ License-File: LICENSE
6
7
  Author: Liminal AI
7
8
  Author-email: info@liminal.ai
8
- Requires-Python: >=3.11,<3.14
9
+ Requires-Python: >=3.12,<3.15
9
10
  Classifier: License :: OSI Approved :: Apache Software License
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
15
16
  Classifier: Programming Language :: Python :: Implementation :: CPython
16
17
  Classifier: Programming Language :: Python :: Implementation :: PyPy
17
18
  Provides-Extra: all
@@ -20,29 +21,28 @@ Provides-Extra: lint
20
21
  Provides-Extra: release
21
22
  Provides-Extra: test
22
23
  Requires-Dist: anyio (>=4.4.0)
23
- Requires-Dist: blacken-docs (==1.19.1) ; extra == "lint"
24
- Requires-Dist: codespell (==2.4.1) ; extra == "lint"
25
- Requires-Dist: cryptography (==43.0.3)
24
+ Requires-Dist: blacken-docs (==1.20.0) ; extra == "lint"
25
+ Requires-Dist: codespell (==2.4.2) ; extra == "lint"
26
+ Requires-Dist: cryptography (==46.0.5)
26
27
  Requires-Dist: darglint (==1.8.1) ; extra == "lint"
27
28
  Requires-Dist: httpx (==0.28.1)
28
29
  Requires-Dist: liminal-sdk-python[build,lint,release,test] ; extra == "all"
29
- Requires-Dist: mashumaro (==3.15)
30
- Requires-Dist: msal (==1.32.3)
31
- Requires-Dist: mypy (==1.15.0) ; extra == "lint"
32
- Requires-Dist: pre-commit (==4.2.0) ; extra == "lint"
33
- Requires-Dist: pre-commit-hooks (==5.0.0) ; extra == "lint"
34
- Requires-Dist: pylint (==3.3.7) ; extra == "lint"
35
- Requires-Dist: pytest (==8.3.5) ; extra == "lint"
36
- Requires-Dist: pytest (==8.3.5) ; extra == "test"
37
- Requires-Dist: pytest-asyncio (==0.26.0) ; extra == "lint"
38
- Requires-Dist: pytest-asyncio (==0.26.0) ; extra == "test"
39
- Requires-Dist: pytest-cov (==6.1.1) ; extra == "test"
40
- Requires-Dist: pytest-httpx (==0.35.0) ; extra == "test"
30
+ Requires-Dist: mashumaro (==3.20)
31
+ Requires-Dist: msal (==1.35.1)
32
+ Requires-Dist: mypy (==1.19.1) ; extra == "lint"
33
+ Requires-Dist: pre-commit (==4.5.1) ; extra == "lint"
34
+ Requires-Dist: pre-commit-hooks (==6.0.0) ; extra == "lint"
35
+ Requires-Dist: pytest (==9.0.2) ; extra == "lint"
36
+ Requires-Dist: pytest (==9.0.2) ; extra == "test"
37
+ Requires-Dist: pytest-asyncio (==1.3.0) ; extra == "lint"
38
+ Requires-Dist: pytest-asyncio (==1.3.0) ; extra == "test"
39
+ Requires-Dist: pytest-cov (==7.1.0) ; extra == "test"
40
+ Requires-Dist: pytest-httpx (==0.36.0) ; extra == "test"
41
41
  Requires-Dist: requests (>=2.32.2)
42
- Requires-Dist: ruff (==0.11.8) ; extra == "lint"
43
- Requires-Dist: tomli (==2.2.1) ; extra == "release"
42
+ Requires-Dist: ruff (==0.15.7) ; extra == "lint"
43
+ Requires-Dist: tomli (==2.4.0) ; extra == "release"
44
44
  Requires-Dist: tomli-w (==1.2.0) ; extra == "release"
45
- Requires-Dist: uv (==0.7.2) ; extra == "build"
45
+ Requires-Dist: uv (==0.10.12) ; extra == "build"
46
46
  Description-Content-Type: text/markdown
47
47
 
48
48
  # Liminal Python SDK
@@ -1,7 +1,7 @@
1
1
  """Define auth providers."""
2
2
 
3
3
 
4
- class AuthProvider: # pylint: disable=too-few-public-methods
4
+ class AuthProvider:
5
5
  """Define an auth provider abstract base class."""
6
6
 
7
7
  async def get_access_token(self) -> str:
@@ -18,7 +18,7 @@ from liminal.errors import AuthError
18
18
  DEFAULT_AUTH_CHALLENGE_TIMEOUT: Final[int] = 60
19
19
 
20
20
 
21
- class DeviceCodeFlowProvider(AuthProvider): # pylint: disable=too-few-public-methods
21
+ class DeviceCodeFlowProvider(AuthProvider):
22
22
  """Define a Microsoft auth provider."""
23
23
 
24
24
  AUTHORITY_URL: Final[str] = "https://login.microsoftonline.com"
@@ -77,12 +77,12 @@ class Client:
77
77
  """
78
78
  client = cls(api_server_url, httpx_client=httpx_client)
79
79
  provider_access_token = await auth_provider.get_access_token()
80
- liminal_auth_response = await client._request( # noqa: SLF001
80
+ liminal_auth_response = await client._request(
81
81
  "GET",
82
82
  "/api/v1/auth/login/oauth/access-token",
83
83
  headers={"Authorization": f"Bearer {provider_access_token}"},
84
84
  )
85
- client._save_session_id_from_auth_response(liminal_auth_response) # noqa: SLF001
85
+ client._save_session_id_from_auth_response(liminal_auth_response)
86
86
  return client
87
87
 
88
88
  @classmethod
@@ -108,10 +108,10 @@ class Client:
108
108
 
109
109
  """
110
110
  client = cls(api_server_url, httpx_client=httpx_client)
111
- session_id_response = await client._request( # noqa: SLF001
111
+ session_id_response = await client._request(
112
112
  "GET", "/api/v1/users/me", cookies={"session": session_id}
113
113
  )
114
- client._save_session_id_from_auth_response(session_id_response) # noqa: SLF001
114
+ client._save_session_id_from_auth_response(session_id_response)
115
115
  return client
116
116
 
117
117
  @classmethod
@@ -132,12 +132,12 @@ class Client:
132
132
 
133
133
  """
134
134
  client = cls(api_server_url, httpx_client=httpx_client)
135
- liminal_auth_response = await client._request( # noqa: SLF001
135
+ liminal_auth_response = await client._request(
136
136
  "POST",
137
137
  "/api/v1/auth/test-automation/login",
138
138
  headers={"x-test-automation-api-key": token},
139
139
  )
140
- client._save_session_id_from_auth_response(liminal_auth_response) # noqa: SLF001
140
+ client._save_session_id_from_auth_response(liminal_auth_response)
141
141
  return client
142
142
 
143
143
  @property
@@ -332,7 +332,6 @@ class Client:
332
332
  url = f"{self._api_server_url}{endpoint}"
333
333
  cookie_jar = self._create_cookie_jar(cookies)
334
334
 
335
- # pylint: disable=contextmanager-generator-missing-cleanup
336
335
  async with (
337
336
  self._get_httpx_client() as client,
338
337
  client.stream(
@@ -6,7 +6,6 @@ from dataclasses import dataclass, field
6
6
 
7
7
  from mashumaro import field_options
8
8
 
9
- from liminal.endpoints.thread.models import DeidentifiedToken
10
9
  from liminal.helpers.model import BaseModel
11
10
 
12
11
 
@@ -103,9 +102,6 @@ class SubmitData(BaseModel):
103
102
  deidentified_input_text_data: CleanseData = field(
104
103
  metadata=field_options(alias="deidentifiedInputTextData")
105
104
  )
106
- deidentified_context_history: list[DeidentifiedToken] = field(
107
- metadata=field_options(alias="deidentifiedContextHistory")
108
- )
109
105
  llm_model: str = field(metadata=field_options(alias="llmModel"))
110
106
  raw_llm_response_text: str = field(
111
107
  metadata=field_options(alias="rawLLMResponseText")
@@ -7,7 +7,7 @@ from mashumaro.config import BaseConfig
7
7
  class BaseModel(DataClassDictMixin):
8
8
  """Define a base model."""
9
9
 
10
- class Config(BaseConfig): # pylint: disable=too-few-public-methods
10
+ class Config(BaseConfig):
11
11
  """Define the configuration."""
12
12
 
13
13
  code_generation_options = ["TO_DICT_ADD_BY_ALIAS_FLAG"] # noqa: RUF012
@@ -7,7 +7,7 @@ from mashumaro.config import BaseConfig
7
7
  class BaseResponseSchema(DataClassDictMixin):
8
8
  """Define a base response schema."""
9
9
 
10
- class Config(BaseConfig): # pylint: disable=too-few-public-methods
10
+ class Config(BaseConfig):
11
11
  """Define the configuration."""
12
12
 
13
13
  code_generation_options = ["TO_DICT_ADD_BY_ALIAS_FLAG"] # noqa: RUF012
@@ -0,0 +1,156 @@
1
+ [build-system]
2
+ requires = [
3
+ "poetry-core==2.3.1",
4
+ ]
5
+ build-backend = "poetry.core.masonry.api"
6
+
7
+ [project]
8
+ classifiers = [
9
+ "License :: OSI Approved :: Apache Software License",
10
+ "Programming Language :: Python",
11
+ "Programming Language :: Python :: 3",
12
+ "Programming Language :: Python :: 3.12",
13
+ "Programming Language :: Python :: 3.13",
14
+ "Programming Language :: Python :: 3.14",
15
+ "Programming Language :: Python :: Implementation :: CPython",
16
+ "Programming Language :: Python :: Implementation :: PyPy",
17
+ ]
18
+ dependencies = [
19
+ "anyio>=4.4.0",
20
+ "cryptography==46.0.5",
21
+ "httpx==0.28.1",
22
+ "mashumaro==3.20",
23
+ "msal==1.35.1",
24
+ "requests>=2.32.2",
25
+ ]
26
+ description = "The Liminal SDK for Python"
27
+ license = "Apache-2.0"
28
+ name = "liminal-sdk-python"
29
+ readme = "README.md"
30
+ requires-python = ">=3.12,<3.15"
31
+ version = "2026.03.0b0"
32
+
33
+ [project.optional-dependencies]
34
+ all = [
35
+ "liminal-sdk-python[build,lint,release,test]",
36
+ ]
37
+ build = [
38
+ "uv==0.10.12",
39
+ ]
40
+ lint = [
41
+ "blacken-docs==1.20.0",
42
+ "codespell==2.4.2",
43
+ "darglint==1.8.1",
44
+ "mypy==1.19.1",
45
+ "pre-commit-hooks==6.0.0",
46
+ "pre-commit==4.5.1",
47
+ "pytest-asyncio==1.3.0",
48
+ "pytest==9.0.2",
49
+ "ruff==0.15.7",
50
+ ]
51
+ release = [
52
+ "tomli==2.4.0",
53
+ "tomli-w==1.2.0",
54
+ ]
55
+ test = [
56
+ "pytest==9.0.2",
57
+ "pytest-asyncio==1.3.0",
58
+ "pytest-cov==7.1.0",
59
+ "pytest-httpx==0.36.0",
60
+ ]
61
+
62
+ [tool.coverage.report]
63
+ exclude_lines = [
64
+ "TYPE_CHECKING",
65
+ "raise NotImplementedError",
66
+ ]
67
+ fail_under = 100
68
+ show_missing = true
69
+
70
+ [tool.coverage.run]
71
+ source = [
72
+ "liminal",
73
+ ]
74
+
75
+ [tool.mypy]
76
+ check_untyped_defs = true
77
+ disallow_incomplete_defs = true
78
+ disallow_subclassing_any = true
79
+ disallow_untyped_calls = true
80
+ disallow_untyped_decorators = true
81
+ disallow_untyped_defs = true
82
+ follow_imports = "silent"
83
+ ignore_missing_imports = true
84
+ no_implicit_optional = true
85
+ platform = "linux"
86
+ python_version = "3.12"
87
+ show_error_codes = true
88
+ strict_equality = true
89
+ warn_incomplete_stub = true
90
+ warn_redundant_casts = true
91
+ warn_unreachable = true
92
+ warn_unused_configs = true
93
+ warn_unused_ignores = true
94
+
95
+ [tool.poetry]
96
+ authors = [
97
+ "Liminal AI <info@liminal.ai>",
98
+ ]
99
+ packages = [
100
+ { include = "liminal" },
101
+ ]
102
+
103
+ [tool.ruff]
104
+ target-version = "py311"
105
+
106
+ [tool.ruff.lint]
107
+ future-annotations = true
108
+ ignore = [
109
+ "A005",
110
+ "D202",
111
+ "D203",
112
+ "D213",
113
+ "PLR0913",
114
+ "PLW2901",
115
+ "PT012",
116
+ "TCH",
117
+ "COM812",
118
+ "COM819",
119
+ "D206",
120
+ "D300",
121
+ "E111",
122
+ "E114",
123
+ "E117",
124
+ "ISC001",
125
+ "ISC002",
126
+ "Q000",
127
+ "Q001",
128
+ "Q002",
129
+ "Q003",
130
+ "W191",
131
+ ]
132
+ select = [
133
+ "ALL",
134
+ ]
135
+
136
+ [tool.ruff.lint.isort]
137
+ combine-as-imports = true
138
+ force-sort-within-sections = true
139
+ known-first-party = [
140
+ "liminal",
141
+ "tests",
142
+ ]
143
+ split-on-trailing-comma = false
144
+
145
+ [tool.ruff.lint.per-file-ignores]
146
+ "tests/*" = [
147
+ "ARG001",
148
+ "FBT001",
149
+ "PLR2004",
150
+ "S101",
151
+ "SLF001",
152
+ ]
153
+
154
+ [tool.vulture]
155
+ min_confidence = 100
156
+ sort_by_size = true
@@ -1,413 +0,0 @@
1
- [build-system]
2
- requires = [
3
- "poetry-core==2.1.3",
4
- ]
5
- build-backend = "poetry.core.masonry.api"
6
-
7
- [project]
8
- classifiers = [
9
- "License :: OSI Approved :: Apache Software License",
10
- "Programming Language :: Python",
11
- "Programming Language :: Python :: 3",
12
- "Programming Language :: Python :: 3.11",
13
- "Programming Language :: Python :: 3.12",
14
- "Programming Language :: Python :: 3.13",
15
- "Programming Language :: Python :: Implementation :: CPython",
16
- "Programming Language :: Python :: Implementation :: PyPy",
17
- ]
18
- dependencies = [
19
- "anyio>=4.4.0",
20
- "cryptography==43.0.3",
21
- "httpx==0.28.1",
22
- "mashumaro==3.15",
23
- "msal==1.32.3",
24
- "requests>=2.32.2",
25
- ]
26
- description = "The Liminal SDK for Python"
27
- license = "Apache-2.0"
28
- name = "liminal-sdk-python"
29
- readme = "README.md"
30
- requires-python = ">=3.11,<3.14"
31
- version = "2025.05.0"
32
-
33
- [project.optional-dependencies]
34
- all = [
35
- "liminal-sdk-python[build,lint,release,test]",
36
- ]
37
- build = [
38
- "uv==0.7.2",
39
- ]
40
- lint = [
41
- "blacken-docs==1.19.1",
42
- "codespell==2.4.1",
43
- "darglint==1.8.1",
44
- "mypy==1.15.0",
45
- "pre-commit-hooks==5.0.0",
46
- "pre-commit==4.2.0",
47
- "pylint==3.3.7",
48
- "pytest-asyncio==0.26.0",
49
- "pytest==8.3.5",
50
- "ruff==0.11.8",
51
- ]
52
- release = [
53
- "tomli==2.2.1",
54
- "tomli-w==1.2.0",
55
- ]
56
- test = [
57
- "pytest==8.3.5",
58
- "pytest-asyncio==0.26.0",
59
- "pytest-cov==6.1.1",
60
- "pytest-httpx==0.35.0",
61
- ]
62
-
63
- [tool.coverage.report]
64
- exclude_lines = [
65
- "TYPE_CHECKING",
66
- "raise NotImplementedError",
67
- ]
68
- fail_under = 100
69
- show_missing = true
70
-
71
- [tool.coverage.run]
72
- source = [
73
- "liminal",
74
- ]
75
-
76
- [tool.mypy]
77
- check_untyped_defs = true
78
- disallow_incomplete_defs = true
79
- disallow_subclassing_any = true
80
- disallow_untyped_calls = true
81
- disallow_untyped_decorators = true
82
- disallow_untyped_defs = true
83
- follow_imports = "silent"
84
- ignore_missing_imports = true
85
- no_implicit_optional = true
86
- platform = "linux"
87
- python_version = "3.11"
88
- show_error_codes = true
89
- strict_equality = true
90
- warn_incomplete_stub = true
91
- warn_redundant_casts = true
92
- warn_unreachable = true
93
- warn_unused_configs = true
94
- warn_unused_ignores = true
95
-
96
- [tool.poetry]
97
- authors = [
98
- "Liminal AI <info@liminal.ai>",
99
- ]
100
- packages = [
101
- { include = "liminal" },
102
- ]
103
-
104
- [tool.pylint.BASIC]
105
- class-const-naming-style = "any"
106
- expected-line-ending-format = "LF"
107
-
108
- [tool.pylint.DESIGN]
109
- max-attributes = 20
110
-
111
- [tool.pylint.FORMAT]
112
- max-line-length = 88
113
-
114
- [tool.pylint.MAIN]
115
- py-version = "3.11"
116
- ignore = [
117
- "tests",
118
- ]
119
- jobs = 2
120
- init-hook = "from pathlib import Path; import sys; from pylint.config import find_default_config_files; sys.path.append( str(Path(next(find_default_config_files())).parent.joinpath('pylint/plugins'))\n ) "
121
- load-plugins = [
122
- "pylint.extensions.code_style",
123
- "pylint.extensions.typing",
124
- ]
125
- persistent = false
126
- fail-on = [
127
- "I",
128
- ]
129
-
130
- [tool.pylint."MESSAGES CONTROL"]
131
- disable = [
132
- "abstract-method",
133
- "duplicate-code",
134
- "too-many-arguments",
135
- "too-many-lines",
136
- "too-many-locals",
137
- "too-many-positional-arguments",
138
- "anomalous-backslash-in-string",
139
- "assert-on-string-literal",
140
- "assert-on-tuple",
141
- "await-outside-async",
142
- "bad-classmethod-argument",
143
- "bad-format-string",
144
- "bad-format-string-key",
145
- "bad-str-strip-call",
146
- "bad-string-format-type",
147
- "bare-except",
148
- "bidirectional-unicode",
149
- "binary-op-exception",
150
- "broad-except",
151
- "broad-exception-raised",
152
- "cell-var-from-loop",
153
- "comparison-of-constants",
154
- "comparison-with-itself",
155
- "consider-alternative-union-syntax",
156
- "consider-iterating-dictionary",
157
- "consider-merging-isinstance",
158
- "consider-using-alias",
159
- "consider-using-dict-comprehension",
160
- "consider-using-f-string",
161
- "consider-using-generator",
162
- "consider-using-get",
163
- "consider-using-set-comprehension",
164
- "consider-using-sys-exit",
165
- "consider-using-ternary",
166
- "continue-in-finally",
167
- "duplicate-bases",
168
- "duplicate-except",
169
- "duplicate-key",
170
- "duplicate-string-formatting-argument",
171
- "duplicate-value",
172
- "empty-docstring",
173
- "eval-used",
174
- "exec-used",
175
- "expression-not-assigned",
176
- "f-string-without-interpolation",
177
- "forgotten-debug-statement",
178
- "format-needs-mapping",
179
- "format-string-without-interpolation",
180
- "function-redefined",
181
- "global-variable-not-assigned",
182
- "implicit-str-concat",
183
- "import-self",
184
- "inconsistent-quotes",
185
- "invalid-all-object",
186
- "invalid-character-backspace",
187
- "invalid-character-esc",
188
- "invalid-character-nul",
189
- "invalid-character-sub",
190
- "invalid-character-zero-width-space",
191
- "invalid-envvar-default",
192
- "invalid-name",
193
- "keyword-arg-before-vararg",
194
- "line-too-long",
195
- "literal-comparison",
196
- "logging-format-interpolation",
197
- "logging-fstring-interpolation",
198
- "logging-not-lazy",
199
- "logging-too-few-args",
200
- "logging-too-many-args",
201
- "misplaced-bare-raise",
202
- "misplaced-future",
203
- "missing-class-docstring",
204
- "missing-final-newline",
205
- "missing-format-string-key",
206
- "missing-function-docstring",
207
- "missing-module-docstring",
208
- "mixed-format-string",
209
- "multiple-imports",
210
- "named-expr-without-context",
211
- "nested-min-max",
212
- "no-else-break",
213
- "no-else-continue",
214
- "no-else-raise",
215
- "no-else-return",
216
- "no-method-argument",
217
- "no-self-argument",
218
- "nonexistent-operator",
219
- "nonlocal-without-binding",
220
- "not-in-loop",
221
- "notimplemented-raised",
222
- "pointless-statement",
223
- "property-with-parameters",
224
- "protected-access",
225
- "raise-missing-from",
226
- "redefined-builtin",
227
- "redefined-slots-in-subclass",
228
- "return-in-init",
229
- "return-outside-function",
230
- "singleton-comparison",
231
- "subprocess-run-check",
232
- "super-with-arguments",
233
- "superfluous-parens",
234
- "syntax-error",
235
- "too-few-format-args",
236
- "too-many-branches",
237
- "too-many-format-args",
238
- "too-many-return-statements",
239
- "too-many-star-expressions",
240
- "too-many-statements",
241
- "trailing-comma-tuple",
242
- "truncated-format-string",
243
- "try-except-raise",
244
- "undefined-all-variable",
245
- "undefined-variable",
246
- "ungrouped-imports",
247
- "unidiomatic-typecheck",
248
- "unnecessary-comprehension",
249
- "unnecessary-direct-lambda-call",
250
- "unnecessary-lambda-assignment",
251
- "unnecessary-pass",
252
- "unneeded-not",
253
- "unused-argument",
254
- "unused-format-string-argument",
255
- "unused-format-string-key",
256
- "unused-import",
257
- "unused-variable",
258
- "use-a-generator",
259
- "use-dict-literal",
260
- "use-list-literal",
261
- "used-prior-global-declaration",
262
- "useless-else-on-loop",
263
- "useless-import-alias",
264
- "useless-object-inheritance",
265
- "useless-return",
266
- "wildcard-import",
267
- "wrong-import-order",
268
- "wrong-import-position",
269
- "yield-inside-async-function",
270
- "yield-outside-function",
271
- "abstract-class-instantiated",
272
- "arguments-differ",
273
- "assigning-non-slot",
274
- "assignment-from-no-return",
275
- "assignment-from-none",
276
- "bad-exception-cause",
277
- "bad-format-character",
278
- "bad-reversed-sequence",
279
- "bad-super-call",
280
- "bad-thread-instantiation",
281
- "catching-non-exception",
282
- "comparison-with-callable",
283
- "deprecated-class",
284
- "dict-iter-missing-items",
285
- "format-combined-specification",
286
- "global-variable-undefined",
287
- "import-error",
288
- "inconsistent-mro",
289
- "inherit-non-class",
290
- "init-is-generator",
291
- "invalid-class-object",
292
- "invalid-enum-extension",
293
- "invalid-envvar-value",
294
- "invalid-format-returned",
295
- "invalid-hash-returned",
296
- "invalid-metaclass",
297
- "invalid-overridden-method",
298
- "invalid-repr-returned",
299
- "invalid-sequence-index",
300
- "invalid-slice-index",
301
- "invalid-slots",
302
- "invalid-slots-object",
303
- "invalid-star-assignment-target",
304
- "invalid-str-returned",
305
- "invalid-unary-operand-type",
306
- "invalid-unicode-codec",
307
- "isinstance-second-argument-not-valid-type",
308
- "method-hidden",
309
- "misplaced-format-function",
310
- "missing-format-argument-key",
311
- "missing-format-attribute",
312
- "missing-kwoa",
313
- "no-member",
314
- "no-value-for-parameter",
315
- "non-iterator-returned",
316
- "non-str-assignment-to-dunder-name",
317
- "nonlocal-and-global",
318
- "not-a-mapping",
319
- "not-an-iterable",
320
- "not-async-context-manager",
321
- "not-callable",
322
- "not-context-manager",
323
- "overridden-final-method",
324
- "raising-bad-type",
325
- "raising-non-exception",
326
- "redundant-keyword-arg",
327
- "relative-beyond-top-level",
328
- "self-cls-assignment",
329
- "signature-differs",
330
- "star-needs-assignment-target",
331
- "subclassed-final-class",
332
- "super-without-brackets",
333
- "too-many-function-args",
334
- "typevar-double-variance",
335
- "typevar-name-mismatch",
336
- "unbalanced-dict-unpacking",
337
- "unbalanced-tuple-unpacking",
338
- "unexpected-keyword-arg",
339
- "unhashable-member",
340
- "unpacking-non-sequence",
341
- "unsubscriptable-object",
342
- "unsupported-assignment-operation",
343
- "unsupported-binary-operation",
344
- "unsupported-delete-operation",
345
- "unsupported-membership-test",
346
- "used-before-assignment",
347
- "using-final-decorator-in-unsupported-version",
348
- "wrong-exception-operation",
349
- ]
350
- enable = [
351
- "useless-suppression",
352
- "use-symbolic-message-instead",
353
- ]
354
-
355
- [tool.pylint.TYPING]
356
- runtime-typing = false
357
-
358
- [tool.pylint.CODE_STYLE]
359
- max-line-length-suggestions = 72
360
-
361
- [tool.ruff]
362
- target-version = "py311"
363
-
364
- [tool.ruff.lint]
365
- select = [
366
- "ALL",
367
- ]
368
- ignore = [
369
- "A005",
370
- "D202",
371
- "D203",
372
- "D213",
373
- "PLR0913",
374
- "PLW2901",
375
- "PT012",
376
- "TCH",
377
- "COM812",
378
- "COM819",
379
- "D206",
380
- "D300",
381
- "E111",
382
- "E114",
383
- "E117",
384
- "ISC001",
385
- "ISC002",
386
- "Q000",
387
- "Q001",
388
- "Q002",
389
- "Q003",
390
- "W191",
391
- ]
392
-
393
- [tool.ruff.lint.isort]
394
- force-sort-within-sections = true
395
- known-first-party = [
396
- "liminal",
397
- "tests",
398
- ]
399
- combine-as-imports = true
400
- split-on-trailing-comma = false
401
-
402
- [tool.ruff.lint.per-file-ignores]
403
- "tests/*" = [
404
- "ARG001",
405
- "FBT001",
406
- "PLR2004",
407
- "S101",
408
- "SLF001",
409
- ]
410
-
411
- [tool.vulture]
412
- min_confidence = 100
413
- sort_by_size = true