Skip to content

Bugs features - #214

Open
KotlinIsland wants to merge 15 commits into
mainfrom
bugs-features
Open

KotlinIsland wants to merge 15 commits into
mainfrom
bugs-features

Conversation

@KotlinIsland

Copy link
Copy Markdown
Owner

No description provided.

…apper around it, so a traceback raised while it is imported shows the line that imported and the line that failed, without python's import machinery or the runner between them
…UTPUT_FORMAT asks for, as by check does, so an editor or a CI job can read them out of the build's output
…and writes an LCOV report against the .by files and lines it was written in
…for a position: the whole reference whose last name the position is on, and the call around a callee when calls are allowed
…any places use it and how many classes subclass it or members override it, counted as textDocument/references and textDocument/implementation answer at its name, for an editor drawing usage counts on every pass
…tTests, with where a new test goes, and a file's or a package's dotted name with by/moduleName
… the class at a position inherits and writing the basedpython declarations that override the ones picked, and stop importing names a .by file has implicitly when an annotation is written
…'s data, and answer by/copiedImports and by/pastedImports, the imports copied code needs and the ones a paste is missing
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

by ecosystem round-trip

base: 920c8f05b36136d65074279a11affe28f50617c8 (merge base) → head: 214/merge

regressions: 1, changed: 26, improvements: 0, error changes: 0 (across 27811 files in 144 projects)

⚠️ 7 project(s) fail to round-trip on both base and head, so this check says nothing about them.

❌ regressions (built on base, now fails)

altair —
build: killed: timed out after 900s

ℹ️ changed round-trip output

apprise — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -616,5 +616,5 @@
     "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/kook.py": {"by": "sha256:39b3c330695431522f3bcd9435df19d227f0cdbf703a653b8abd2064477bc755", "py": "sha256:a22afc1ec00a808df573faff16e928f9df71e2831702b1c5dd20c5f9bc0f2195"},
     "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/kumulos.py": {"by": "sha256:601e3846598e420bfc5f1e95542db10fb87a37816bd9d7273890d82b645f1c00", "py": "sha256:a4d6d077df101166e05679412e633932ba4c80838c8db7d8d7187b0715122381"},
-    "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/lametric.py": {"by": "sha256:783c3316f0dc861684a5970b483a2c16793acecfe2b4d105a3167ffa700530d7", "py": "sha256:9463443ef2beadabd9072b2e1e7f9118f8ed1249c94c5d6655025799ee890d62"},
+    "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/lametric.py": {"by": "sha256:783c3316f0dc861684a5970b483a2c16793acecfe2b4d105a3167ffa700530d7", "py": "sha256:445ddaf40c775cf23c5795acd8970160e7349573bc4d428d74da034aface5e7d"},
     "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/lark.py": {"by": "sha256:0eb6f57772edee40d96ea2ff142d06a732f277927834becdd7c05ce603b1f4fa", "py": "sha256:51806667f42e7dd91016ffe0d6494094ec2743cd51803e3d76824d8feedacce1"},
     "/tmp/tmp0odnw9q_/apprise/build/apprise/plugins/lauther.py": {"by": "sha256:634ebff28eff54fb147ea22c2a516e05f1d5508601e56faeec8d909e6d4272c6", "py": "sha256:db694abbb11f04da6f084747fce0ad6c14446dd2355916c177b12b133f10b169"},
apprise — apprise/plugins/lametric.py
--- base/apprise/plugins/lametric.py
+++ head/apprise/plugins/lametric.py
@@ -780,5 +780,5 @@
                 "category": _soundness_check(self.sound[0], str),
                 # The first element of our tuple is always the id
-                "id": _soundness_check(_soundness_check(self.sound[1], (tuple, str))[0], str),
+                "id": _soundness_check(_soundness_check(self.sound[1], (str, tuple))[0], str),
                 # repeat - defines the number of times sound must be played.
                 # If set to 0 sound will be played until notification is
pandera — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -162,5 +162,5 @@
     "/tmp/tmp0odnw9q_/pandera/build/pandera/backends/tensordict/__init__.py": ("/tmp/tmp0odnw9q_/pandera/pandera/backends/tensordict/__init__.by", [0]),
... 6768 characters elided ...
     "/tmp/tmp0odnw9q_/pandera/build/pandera/backends/tensordict/register.py": {"by": "sha256:57ccf9a4064dd98f0db3b81a5f1f25e95d05f96b6396b92d11bc35e096444d4f", "py": "sha256:d9b0b4251fade44f9d63e0cbcdfe83323af8c3e352563b3bdac795bb3595efaf"},
pandera — pandera/backends/tensordict/builtin_checks.py
--- base/pandera/backends/tensordict/builtin_checks.py
+++ head/pandera/backends/tensordict/builtin_checks.py
@@ -1,5 +1,4 @@
 """Built-in checks for TensorDict."""
 lazy from typing import Any
-from pandera._by_runtime import _soundness_check
 
 
@@ -21,8 +20,8 @@
     if TORCH_AVAILABLE:
 
-        @_soundness_check(register_builtin_check(
+        @register_builtin_check(
             aliases=["gt"],
             error="greater_than({min_value})",
-        ), partial)
+        )
         def greater_than(data: torch.Tensor, min_value: Any) -> torch.Tensor:
             """Ensure values are strictly greater than a minimum value.
@@ -33,8 +32,8 @@
             return data > min_value
 
-        @_soundness_check(register_builtin_check(
+        @register_builtin_check(
             aliases=["ge"],
             error="greater_than_or_equal_to({min_value})",
-        ), partial)
+        )
         def greater_than_or_equal_to(
             data: torch.Tensor, min_value: Any
@@ -47,8 +46,8 @@
             return data >= min_value
 
-        @_soundness_check(register_builtin_check(
+        @register_builtin_check(
             aliases=["lt"],
             error="less_than({max_value})",
-        ), partial)
+        )
         def less_than(data: torch.Tensor, max_value: Any) -> torch.Tensor:
             """Ensure all values are strictly less than a maximum value.
@@ -59,8 +58,8 @@
... 650 characters elided ...
@@ -101,8 +100,8 @@
                 return (data > min_value) & (data < max_value)
 
-        @_soundness_check(register_builtin_check(
+        @register_builtin_check(
             aliases=["isin"],
             error="isin({allowed_values})",
-        ), partial)
+        )
         def isin(data: torch.Tensor, allowed_values: Iterable) -> torch.Tensor:
             """Ensure all values are in a set of allowed values.
pycryptodome — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -423,5 +423,5 @@
     "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Random/test_random.py": {"by": "sha256:11a20824d4f1ae9b303629b26d716d5f6acfda24239a49ecf10c17dece54850d", "py": "sha256:7c4599d60804b7888aff84a05ee0b4aa93b16ac98529fceac2a3990494897b3a"},
     "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Signature/__init__.py": {"by": "sha256:43095f4173f93e9c98d8e8be9f642e9a35030cbff6fa445e5d7e1773f00d05f7", "py": "sha256:43095f4173f93e9c98d8e8be9f642e9a35030cbff6fa445e5d7e1773f00d05f7"},
-    "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Signature/test_dss.py": {"by": "sha256:07642f460f9e613957797c4957a02f260b3f7e690755e68cfd8bd92bdb21e0cd", "py": "sha256:ba1b048264b821ba2cdda79104658be96e1da008e70f6975ffdbbca7cc65188d"},
+    "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Signature/test_dss.py": {"by": "sha256:07642f460f9e613957797c4957a02f260b3f7e690755e68cfd8bd92bdb21e0cd", "py": "sha256:d9344ba96c750303e98f833c7c811700db12ee05eafede5d0ad1c093daf0d168"},
     "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Signature/test_eddsa.py": {"by": "sha256:b48e98ea0cf6dd574541e13828dbbd64d1e80e6479edc509553228916c2a844e", "py": "sha256:3b21b0b5cb6cf5c675e12923affcf477d97cffa6b9d5d517525ba57aafe705e1"},
     "/tmp/tmp3u3ba6fa/pycryptodome/build/lib/Crypto/SelfTest/Signature/test_mldsa.py": {"by": "sha256:78e10c68d2ee0b721f90d1a0c01a62757fbd4d3a32de96e84859507fa0f118cb", "py": "sha256:c25b5b7f039ad66de2de72d54e4c961f4d51dbe4ee87d6535eca64fd274b8518"},
pycryptodome — lib/Crypto/SelfTest/Signature/test_dss.py
--- base/lib/Crypto/SelfTest/Signature/test_dss.py
+++ head/lib/Crypto/SelfTest/Signature/test_dss.py
@@ -647,7 +647,7 @@
         TestKey = namedtuple("TestKey", "p q g x y")
         new_keys = {}
-        for k in self.keys:
-            tk = TestKey(*[t2l(y) for y in k[:-1]])
-            new_keys[k[-1]] = tk
+        for k in _soundness_iter(self.keys, (tuple, str)):
+            tk = TestKey(*[t2l(y) for y in _soundness_iter(_soundness_check(k[:-1], (tuple, str)), str)])
+            new_keys[_soundness_check(k[-1], str)] = tk
         self.keys = new_keys
pytest-autoprofile — lib/pytest_autoprofile/__init__.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_doctest.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_json.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_multiprocessing.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_patches.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_test_util_capture_warnings.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_test_utils.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_typing.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_warnings.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/_xdoctest.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/importers.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/option_hooks.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/plugin.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/profiler.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/rewriting.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/setup.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/startup_hook.py
(only produced on base)
pytest-autoprofile — lib/pytest_autoprofile/utils.py
(only produced on base)
scipy — _by_sourcemap.py
--- base/_by_sourcemap.py
+++ head/_by_sourcemap.py
@@ -1758,5 +1758,5 @@
     "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_compressed.py": {"by": "sha256:af59e67bb1203608c2a987a87ecfdf3f298a213feea6d8fd817c94552c0214af", "py": "sha256:c638f6172fd5b0cd695025f48299896616057a04ef4da5104057043c3e253422"},
     "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_construct.py": {"by": "sha256:b0f28df198b1d809eb849d2d73854d09479e963ae0bc81b748bd9bf21386e0ee", "py": "sha256:cb0170590487d6970ae2df7302d0efba22bb82504df8fecff4ae0798f84d7d83"},
-    "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_coo.py": {"by": "sha256:20e7eb8e1caa149de2bec9fa997b3933a35eeadba90537136d994b85c05cc31b", "py": "sha256:842563863607a05844cc57d5dfa912e9ea301dd9a9c60dae5c08908bd2dc1aba"},
+    "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_coo.py": {"by": "sha256:20e7eb8e1caa149de2bec9fa997b3933a35eeadba90537136d994b85c05cc31b", "py": "sha256:fe04c737afcb3f61869c7b11a3e5d216007769d548e937a45d8a970449a41f4f"},
     "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_csc.py": {"by": "sha256:dc021f60f11769cf4b6017f2baf4b4bc52c42cc51a8bcdd4e35826c981b07e37", "py": "sha256:d12c45eb74da3119a9f6aa8cbae0d42422d09e456cb24ef21671a3eaaa90221a"},
     "/tmp/tmp3u3ba6fa/scipy/build/scipy/sparse/_csr.py": {"by": "sha256:ff9a69f98a8d6262348251c4e927f372aaec191d1c4cdd2d4c5ad85686b13a73", "py": "sha256:e7359679bc4a800bcc9349d894b9301e8d9917b3110b2829c04d6aca5259959f"},
scipy — scipy/sparse/_coo.py
--- base/scipy/sparse/_coo.py
+++ head/scipy/sparse/_coo.py
@@ -652,7 +652,7 @@
         # and will mistakenly align with x_coord columns if not removed.
         if none_pos:
-            new_shape = list(new_shape)
+            new_shape = list[int](new_shape)
             for j in none_pos[::-1]:
-                new_shape.pop(j)
+                _soundness_check(new_shape.pop(j), int)
             new_shape = tuple(new_shape)
 
@@ -697,5 +697,5 @@
             # Get arr_shape if any arrays are in the index.
             # Also ravel the corresponding x_coords.
-            for idx in index:
+            for idx in _soundness_iter(index, slice):
                 if not isinstance(idx, slice) and not isintlike(idx):
                     arr_shape = idx.shape
@@ -734,5 +734,5 @@
                 continue
             elif isinstance(idx, slice):
-                start, stop, step = idx.indices(self.shape[i])
+                start, stop, step = _soundness_check(idx.indices(self.shape[i]), tuple)
                 new_coords[i] = (start + x_coords[_soundness_check(x_axes[i], int)] * step)
             else:  # array idx

💥 fails to round-trip (unchanged from base)

  • alerta: build: killed: timed out after 900s
  • cryptography: build: killed: exceeded 11.7395GB memory budget
  • manticore: reverse: killed: exceeded 11.7365GB memory budget
  • openlibrary: reverse: killed: timed out after 900s
  • pandas: build: killed: timed out after 900s
  • pandas-stubs: build: killed: timed out after 900s
  • sympy: reverse: thread '' (5448) has overflowed its stack

⏭️ skipped

  • AutoSplit: setup failed: setup_primer_project.py failed for 'AutoSplit': Cloning into '/tmp/tmpkn7cnbh8/AutoSplit'... Using CPython 3.12.3 interpreter at: /home/runner/work/_temp/setup-uv-cache/environments-v2/…
  • CPython (Argument Clinic): skipped: 2359 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • CPython (cases_generator): skipped: 2359 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • CPython (peg_generator): skipped: 2359 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • core: skipped: 19943 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • dd-trace-py: skipped: 3073 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • docstring-adder: setup failed: setup_primer_project.py failed for 'docstring-adder': Cloning into '/tmp/tmphh80yr93/docstring-adder'... Using CPython 3.12.3 interpreter at: /home/runner/work/_temp/setup-uv-cache/envi…
  • ecosystem-analyzer: setup failed: setup_primer_project.py failed for 'ecosystem-analyzer': Cloning into '/tmp/tmp8bv13ux7/ecosystem-analyzer'... Using CPython 3.12.3 interpreter at: /home/runner/work/_temp/setup-uv-cach…
  • mongo-python-driver: setup failed: setup_primer_project.py failed for 'mongo-python-driver': Cloning into '/tmp/tmpkn7cnbh8/mongo-python-driver'... Submodule 'drivers-evergreen-tools' (https://github.com/mongodb-labs/dri…
  • prefect: setup failed: setup_primer_project.py failed for 'prefect': Cloning into '/tmp/tmp0odnw9q_/prefect'... Updating files: 26% (1419/5457) Updating files: 27% (1474/5457) Updating files: 28% (1528/5457) …
  • pydantic: setup failed: setup_primer_project.py failed for 'pydantic': Cloning into '/tmp/tmpuwul3vvd/pydantic'... Using CPython 3.12.3 interpreter at: /home/runner/work/_temp/setup-uv-cache/environments-v2/ch…
  • pylint: skipped: 2519 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • rotki: skipped: 2680 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory
  • spack: skipped: known to spike past the runner's memory during by build (faster than the watchdog can react)
  • streamlit: setup failed: setup_primer_project.py failed for 'streamlit': Cloning into '/tmp/tmp0odnw9q_/streamlit'... Updating files: 67% (6871/10108) Updating files: 68% (6874/10108) Updating files: 69% (6975/…
  • zulip: skipped: 2039 .py files exceeds --max-project-py-files (2000); by build would not fit in the runner's memory

…colon is typed, over textDocument/onTypeFormatting, and complete the statement at a position over by/completeStatement
…s in by/syntaxOutline, and offer putting a list's elements on separate lines or on one line as the refactor.rewrite.splitList and joinList code actions
…one of their suites and the clauses that can be removed, each with the ranges it rewrites and keeps and edits that dedent the kept suites line by line
…token modifier, report each string part's text runs in by/syntaxOutline, and answer by/transpile for a document the client has not opened
…ot, bound unused_name's search for clippy, and update the initialize and semantic token snapshots for the code actions and token modifier the combined branches add
…the forward one is, since its semantic model builds a database of its own and the request panicked with cannot change database mid-query
…rkspace instead of one per declaration, run the counts one at a time on a search lane of their own so they never fill the workers other requests wait on, stop a running request and its parallel work when the client cancels it, and read the vendored root only when a stub is mapped, since every file a search visits read it under the environment lock

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant