pytest-language-server 0.3.1__tar.gz → 0.4.0__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 (32) hide show
  1. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/Cargo.lock +1 -1
  2. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/Cargo.toml +9 -1
  3. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/PKG-INFO +28 -1
  4. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/README.md +27 -0
  5. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/pyproject.toml +1 -1
  6. pytest_language_server-0.4.0/src/fixtures.rs +2501 -0
  7. pytest_language_server-0.4.0/src/lib.rs +3 -0
  8. pytest_language_server-0.4.0/src/main.rs +1574 -0
  9. pytest_language_server-0.4.0/tests/test_project/conftest.py +31 -0
  10. pytest_language_server-0.4.0/tests/test_project/subdir/conftest.py +25 -0
  11. pytest_language_server-0.4.0/tests/test_project/subdir/test_hierarchy.py +42 -0
  12. pytest_language_server-0.4.0/tests/test_project/subdir/test_override.py +14 -0
  13. pytest_language_server-0.4.0/tests/test_project/test_parent_usage.py +23 -0
  14. pytest_language_server-0.3.1/src/fixtures.rs +0 -1011
  15. pytest_language_server-0.3.1/src/main.rs +0 -336
  16. pytest_language_server-0.3.1/tests/test_project/conftest.py +0 -13
  17. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.github/dependabot.yml +0 -0
  18. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.github/workflows/ci.yml +0 -0
  19. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.github/workflows/release.yml +0 -0
  20. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.github/workflows/security.yml +0 -0
  21. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.gitignore +0 -0
  22. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/.pre-commit-config.yaml +0 -0
  23. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/Formula/pytest-language-server.rb +0 -0
  24. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/LICENSE +0 -0
  25. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/RELEASE.md +0 -0
  26. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/SECURITY.md +0 -0
  27. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/bump-version.sh +0 -0
  28. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/deny.toml +0 -0
  29. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/tests/manual_test.py +0 -0
  30. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/tests/test_parser_api.rs +0 -0
  31. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/tests/test_project/test_example.py +0 -0
  32. {pytest_language_server-0.3.1 → pytest_language_server-0.4.0}/uv.lock +0 -0
@@ -753,7 +753,7 @@ dependencies = [
753
753
 
754
754
  [[package]]
755
755
  name = "pytest-language-server"
756
- version = "0.3.1"
756
+ version = "0.4.0"
757
757
  dependencies = [
758
758
  "dashmap 6.1.0",
759
759
  "rustpython-parser",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pytest-language-server"
3
- version = "0.3.1"
3
+ version = "0.4.0"
4
4
  edition = "2021"
5
5
  rust-version = "1.83"
6
6
  authors = ["Thiago Bellini Ribeiro <hackedbellini@gmail.com>"]
@@ -11,6 +11,14 @@ keywords = ["pytest", "lsp", "language-server", "testing"]
11
11
  categories = ["development-tools", "development-tools::testing"]
12
12
  readme = "README.md"
13
13
 
14
+ [[bin]]
15
+ name = "pytest-language-server"
16
+ path = "src/main.rs"
17
+
18
+ [lib]
19
+ name = "pytest_language_server"
20
+ path = "src/lib.rs"
21
+
14
22
  [dependencies]
15
23
  tower-lsp = "0.20.0"
16
24
  tokio = { version = "1.48", features = ["full"] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest-language-server
3
- Version: 0.3.1
3
+ Version: 0.4.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -57,6 +57,8 @@ Find all usages of a fixture across your entire test suite:
57
57
  - Works from fixture definitions or usage sites
58
58
  - Character-position aware (distinguishes between fixture name and parameters)
59
59
  - Shows references in all test files
60
+ - Correctly handles fixture overriding and hierarchies
61
+ - **LSP spec compliant**: Always includes the current position in results
60
62
 
61
63
  ### 📚 Hover Documentation
62
64
  View fixture information on hover:
@@ -244,6 +246,31 @@ pytest-language-server correctly implements pytest's fixture shadowing rules:
244
246
  2. **Closest conftest.py**: Searches parent directories for conftest.py files
245
247
  3. **Virtual environment**: Third-party plugin fixtures
246
248
 
249
+ ### Fixture Overriding
250
+
251
+ The LSP correctly handles complex fixture overriding scenarios:
252
+
253
+ ```python
254
+ # conftest.py (parent)
255
+ @pytest.fixture
256
+ def cli_runner():
257
+ return "parent runner"
258
+
259
+ # tests/conftest.py (child)
260
+ @pytest.fixture
261
+ def cli_runner(cli_runner): # Overrides parent
262
+ return cli_runner # Uses parent
263
+
264
+ # tests/test_example.py
265
+ def test_example(cli_runner): # Uses child
266
+ pass
267
+ ```
268
+
269
+ When using find-references:
270
+ - Clicking on the **function name** `def cli_runner(...)` shows references to the child fixture
271
+ - Clicking on the **parameter** `cli_runner(cli_runner)` shows references to the parent fixture
272
+ - Character-position aware to distinguish between the two
273
+
247
274
  ## Supported Third-Party Fixtures
248
275
 
249
276
  Automatically discovers fixtures from popular pytest plugins:
@@ -31,6 +31,8 @@ Find all usages of a fixture across your entire test suite:
31
31
  - Works from fixture definitions or usage sites
32
32
  - Character-position aware (distinguishes between fixture name and parameters)
33
33
  - Shows references in all test files
34
+ - Correctly handles fixture overriding and hierarchies
35
+ - **LSP spec compliant**: Always includes the current position in results
34
36
 
35
37
  ### 📚 Hover Documentation
36
38
  View fixture information on hover:
@@ -218,6 +220,31 @@ pytest-language-server correctly implements pytest's fixture shadowing rules:
218
220
  2. **Closest conftest.py**: Searches parent directories for conftest.py files
219
221
  3. **Virtual environment**: Third-party plugin fixtures
220
222
 
223
+ ### Fixture Overriding
224
+
225
+ The LSP correctly handles complex fixture overriding scenarios:
226
+
227
+ ```python
228
+ # conftest.py (parent)
229
+ @pytest.fixture
230
+ def cli_runner():
231
+ return "parent runner"
232
+
233
+ # tests/conftest.py (child)
234
+ @pytest.fixture
235
+ def cli_runner(cli_runner): # Overrides parent
236
+ return cli_runner # Uses parent
237
+
238
+ # tests/test_example.py
239
+ def test_example(cli_runner): # Uses child
240
+ pass
241
+ ```
242
+
243
+ When using find-references:
244
+ - Clicking on the **function name** `def cli_runner(...)` shows references to the child fixture
245
+ - Clicking on the **parameter** `cli_runner(cli_runner)` shows references to the parent fixture
246
+ - Character-position aware to distinguish between the two
247
+
221
248
  ## Supported Third-Party Fixtures
222
249
 
223
250
  Automatically discovers fixtures from popular pytest plugins:
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "pytest-language-server"
7
- version = "0.3.1"
7
+ version = "0.4.0"
8
8
  description = "A blazingly fast Language Server Protocol implementation for pytest"
9
9
  authors = [{name = "Thiago Bellini Ribeiro", email = "hackedbellini@gmail.com"}]
10
10
  readme = "README.md"