Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Using pytestCheckPhase Running phase: unpackPhase unpacking source archive /nix/store/zwm2z7xg8nrc0qyx19wga55yh56njhll-nixbot source root is nixbot setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... * Building wheel... Successfully built nixbot-0.0.1-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed nixbot-0.0.1-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase checking for references to /nix/var/nix/builds/nix-34626-734064540/ in /nix/store/p6xwyyy4adkmkpygpr9nx2nvl4sjzxhf-python3.14-nixbot-tests... patching script interpreter paths in /nix/store/p6xwyyy4adkmkpygpr9nx2nvl4sjzxhf-python3.14-nixbot-tests stripping (with command strip and flags -S) in /nix/store/p6xwyyy4adkmkpygpr9nx2nvl4sjzxhf-python3.14-nixbot-tests/lib /nix/store/p6xwyyy4adkmkpygpr9nx2nvl4sjzxhf-python3.14-nixbot-tests/bin checking for references to /nix/var/nix/builds/nix-34626-734064540/ in /nix/store/1rg16i4cxc2sb3py1chvbmzk1bjcj2qa-python3.14-nixbot-tests-dist... patching script interpreter paths in /nix/store/1rg16i4cxc2sb3py1chvbmzk1bjcj2qa-python3.14-nixbot-tests-dist Rewriting #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 to #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6 wrapping `/nix/store/p6xwyyy4adkmkpygpr9nx2nvl4sjzxhf-python3.14-nixbot-tests/bin/nixbot'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest --numprocesses=10 /nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ============================= test session starts ============================== platform darwin -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0 benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) rootdir: /nix/var/nix/builds/nix-34626-734064540/nixbot configfile: pyproject.toml plugins: asyncio-1.4.0, timeout-2.4.0, xdist-3.8.0, benchmark-5.2.3, anyio-4.14.2 asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function timeout: 60.0s timeout method: signal timeout func_only: False initialized: 7/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) initialized: 8/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) initialized: 9/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 3/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 4/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 5/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 6/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 7/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) ready: 8/10 workers/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) /nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. warner(PytestBenchmarkWarning(text)) 10 workers [807 items] ...........s....ssss.s.......sss........................................ [ 8%] ........................................................................ [ 17%] ......F.......................................................E.EE.EEEEE [ 26%] EEEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEEEE. [ 35%] EEEEEEEEEEEEEE.EEEEEEsE.EE.EEEEE...E.EE.EEE.EEEE....sEEEEEEEEEEE.EEEEEEE [ 44%] EEEEEEEEEEE.EEE.EEEEE.EEEEEEEEEEE..EEEEEEEEEE.EEEEEEEE..E...E.....EEEEEE [ 53%] EE.EEEEEEEE.E............ssssssssssss........E..EEEEEE.E........E...E..E [ 62%] .EE.EE.EEE..EEE............................EEEE.EE...EE.E.E.EE.......... [ 71%] .....EEEE.EEEEEE...EEEE..EEEEEE.E..E.EEEE.EE.EEEE........E....E.E....... [ 80%] ............EEEE.....E.E....EE.EEEEEE.E..E..E.EEE.EEEEEEssss.........E.E [ 89%] ..EE.EEEE..EE.EEEE.E........EE..EEEEs..E......E...EEEEEEEE.......EE.E... [ 98%] ............... [100%] ==================================== ERRORS ==================================== ____________________ ERROR at setup of test_full_lifecycle _____________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_failure_aggregation __________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_control_buttons_hidden_without_permission _______ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________________ ERROR at setup of test_tree_hash_reuse ____________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_admin_can_restart_and_cancel ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_eval_reuse_from_cancelled_build ____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_pr_author_can_control_own_pr ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_migrations_idempotent _________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_repo_writer_can_control_without_admin_or_authorship __ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_eval_reuse_skipped_when_drvs_gone ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_project_store_sync_and_legacy_import __________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_cancel_all_requires_admin _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_scheduled_worktree_id_distinct_per_effect _______ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_html_error_pages ____________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_failed_migration_error_not_masked ___________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_main_push_promotes_reused_pr_build ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_anonymous_sees_public_only _______________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_legacy_import_runs_despite_pull_based_rows _______ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_cancel_all_cancels_pending_and_running_builds _____ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_scheduled_worktree_id_sanitizes_traversal _______ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw7'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_api_strips_ansi_from_errors ______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_unauthorized_user_sees_public_only ___________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_edited_migration_rejected _______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_merge_conflict_fails_build _______________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_legacy_import_scopes_topics_per_forge _________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_cancel_all_button_admin_only ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________________ ERROR at setup of test_homepage ________________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_resolve_credential_path ________________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw7'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_authorized_user_sees_private ______________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_catchup_migration_repairs_pre_0033_schema _______ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_build_reuse_clears_pr_author_in_other_context _____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_csrf_cross_origin_rejected _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_prune_missing_disabled_projects ____________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_project_page_with_filters _______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_admin_sees_everything _________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_build_service_accepts_asyncpg_dsn ___________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_huge_attr_name_does_not_break_notify_trigger ______ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_effects_started_flag __________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_status_badge_urls ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_project_store_sync_skips_unchanged_rows ________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_admin_sees_disabled_repos_without_search ________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_visibility_fetcher_and_cache_ttl_wired _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_restart_single_attribute ________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_schema_constraints ___________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_all_digit_branch_is_filterable _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_aggregation_generation_monotonic ____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_gitea_hook_registration ________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_non_admin_does_not_see_disabled_repos _________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_restart_unknown_attribute_is_404 ____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_aclose_cancels_in_flight_tasks _____________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________________ ERROR at setup of test_build_page _______________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_check_run_store_round_trip _______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___ ERROR at setup of test_internal_error_not_recorded_in_failed_build_cache ___ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_api_token_sees_private _________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_gitlab_heads_carry_target_branch_base _________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_restart_attribute_with_special_chars_redirects_encoded _ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_pr_close_discards_queued_changes ____________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_attribute_rows_fragment_paginates ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_log_path_attribute_name_sanitized ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_admin_api_token_sees_private ______________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_failed_status_store_component _____________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_admin_project_toggle __________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_gitea_heads_encode_slashed_default_branch _______ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_build_branches_gates_branch_pushes ___________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_build_page_shows_eval_warning_groups __________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_forge_repo_admins_can_toggle_their_repos ________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_toggle_activates_newly_enabled_project _________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_cancel_interrupts_evaluation ______________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_failed_build_cache_component ______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_restart_gitlab_mr_build_fetches_mr_refs ________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_build_page_shows_per_attribute_eval_warnings ______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_run_schedule ______________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_build_waiting_for_eval_slot_stays_pending _______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_reconcile_unbuilt_heads ________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_get_or_create_build_concurrent_no_duplicates ______ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_restart_eval_failed_build_reevaluates _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_build_page_renders_ansi_in_error ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_forge_repo_writers_can_control_their_repos _______ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_repo_refresh ______________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_pending_attribute_rows_recorded_for_crash_recovery ___ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_gitea_watermark_stops_pagination ____________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_commit_eval_result_atomic _______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_running_build_shows_progress ______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_restart_clears_stale_error_and_warnings ________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_fetch_errors_are_not_cached ______________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_api_enable_disable ___________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_gitlab_heads_filter_updated_after ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_cancelled_build_not_reused _______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_eval_warnings_null_when_empty _____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_build_page_live_markers ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_access_cache_used ___________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_restart_unknown_attribute_is_a_noop __________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_api_restart_and_cancel _________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_attribute_history ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_metrics_unauthenticated_no_private_names ________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_reuse_backfills_pr_fields _______________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_reconcile_watermark_store _______________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_restart_failed_eval_attribute_reevaluates _______ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_rerun_flips_stale_red_eval_status ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_api_token_lifecycle __________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_configured_viewers_see_private _____________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_overview_ignores_pr_branches ______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_reuse_by_other_pr_clears_both_identity_fields _____ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_expired_api_tokens_pruned _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_recovery_rerun_failures_not_cached ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_register_repo_hook_without_admin_warns _________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_pending_build_shows_eval_blocker ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_api_token_inherits_login_groups ____________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_interrupted_reeval_keeps_attribute_rows ________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_branch_push_takes_over_reused_pr_build _________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_token_creation_with_expiry _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_gitlab_mr_fetches_merge_request_refs __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_gitlab_hook_registration ________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_project_filter_escapes_like_wildcards _________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_logout_invalidates_access_cache ____________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_restart_cancelled_build_reschedules_attributes _____ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_proxy_user_can_manage_api_tokens ____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_pr_does_not_capture_branch_push_build _________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_rerun_fetches_forge_change_request_refs[github] ____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_page_out_of_range_does_not_error ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_register_repo_hook_500_with_403_in_body_raises _____ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_bearer_token_cannot_manage_api_tokens _________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_restart_cancelled_mid_eval_reevaluates _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_complete_attribute_preserves_eval_outputs _______ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_activity_page _____________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_gitlab_register_repo_hook_status_classification ____ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_rerun_fetches_forge_change_request_refs[gitlab] ____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_api_token_controls_build ________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_restart_while_unwinding_waits_then_runs ________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_complete_attribute_marks_substituted_as_cached _____ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_activity_no_sentinel_on_exact_page ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_gitea_legacy_hook_delete_failure_warns _________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_build_service_composition _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_cancelled_build_reuse_rebuilds _____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_complete_attribute_replaces_log_metadata ________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_restart_attribute_while_build_running _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_activity_rows_fragment_pagination ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_sync_tolerates_in_batch_duplicates ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_restart_removes_stale_logs _______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_inflight_share_fans_out_final_status __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_project_rows_fragment_filters _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_cancel_not_running_posts_forge_status _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_record_attributes_persists_pending_rows_with_outputs __ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_restart_clears_failed_cache ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_metrics_are_gauges ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_check_rerequested_dispatch _______________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_stale_event_does_not_supersede_newer_build _______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_webhook_setup_shown_to_admin_only ___________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_mark_attribute_building_does_not_resurrect_cancelled_rows _ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_metrics_are_cached ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_eval_failure_cleans_cancel_events ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_cancel_not_running_settles_attribute_rows _______ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_webhook_secret_regeneration ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_static_urls_carry_content_version ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_mark_attribute_building_sets_status_and_started_at ___ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_eval_settings_wired __________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_cancel_attribute_not_running_reaggregates_build ____ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_retry_after_parsing __________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_complete_attribute_if_unfinished_skips_terminal_rows __ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_eval_netrc_withheld_from_pr_with_instance_wide_creds __ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_work_retry_delay_honors_retry_after __________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_pull_based_projects_synced_and_buildable ________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_legacy_project_urls_redirect ______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_private_repo_public_badge_bypasses_session_visibility _ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_eval_gcroots_dir_removed_after_build __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_report_retry ______________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_failed_build_cache_scoped_per_project _________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_topic_does_not_hard_filter_discovery __________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_legacy_redirect_hides_invisible_projects ________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_effects_run_after_default_branch_success ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_eval_stats_lifecycle __________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_startup_reevaluates_interrupted_eval __________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_effect_item_setup_failure_settles_row _________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_legacy_redirect_404s_on_ambiguous_owner_name ______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_pr_worktree_config_cannot_grant_effects ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_restart_attribute_posts_pending ____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_rerun_of_interrupted_eval_reevaluates _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_health_and_static ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_rerun_effects_runs_effects_again ____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_rerun_resumes_building_rows_and_keeps_finished _____ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________________ ERROR at setup of test_404s __________________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_recovery_reports_interrupted_effects __________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_rerun_effects_cancels_hung_effect ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_rerun_reevaluates_when_drv_paths_were_garbage_collected _ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_log_viewer_and_raw ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_work_dispatch _____________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_rerun_single_effect __________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_structured_log_endpoints ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_reeval_failure_marks_build_failed ___________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_restart_resets_effects _________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_recovery_rerun_runs_effects ______________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_structured_log_window_caps_huge_derivation _______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_gitlab_discovery_and_hook_registration _________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_effects_restart_route _________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_repo_list_and_toggle __________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_unsupported_system_attr_does_not_block_aggregation ___ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_attr_named_dot_txt_not_shadowed_by_raw_route ______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_single_effect_restart_route ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_health_serves_while_startup_blocks ___________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_build_list_and_view __________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_linked_context_reported_on_eval_failure ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_attr_names_with_special_characters ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_webhook_panel_is_forge_aware ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_build_restart_cancel __________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_log_viewer_waits_for_queued_attribute _________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_match_skip_and_run ___________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_api_attr_and_effects_control ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_eval_failure_settles_streamed_attributes ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_log_summary_attr_and_drv ________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_log_viewer_unavailable_for_logless_status _______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_permission_denied_records_reason ____________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_repo_and_build_inference ________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_effect_rows_roundtrip _________________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_eval_error_served_like_build_log ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________________ ERROR at setup of test_auth_status ______________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_modified_files_gate __________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_effect_items_resume_only_pending ____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_api_projects_and_builds ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_forge_outage_is_retried ________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_effect_crash_settles_the_row ______________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_build_rows_link_refs __________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_forge_outage_gives_up _________________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_attributes_sort_building_before_pending ________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_concurrent_effects_use_independent_worktrees ______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_queue_sorts_active_before_pending ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_lock_shared_with_push_effect_and_supersession _____ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_locked_effect_gets_shared_dedup_key __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_queue_position_is_global_and_skips_running _______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_checkout_is_pr_head_without_token ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_effect_item_not_claimable_until_dep_settles ______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________________ ERROR at setup of test_openapi_docs ______________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_build_success_enqueues_delivery ____________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___ ERROR at setup of test_log_follow_finished_attr_falls_back_to_stored_log ___ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_resume_skips_terminal_attributes ____________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_effect_dep_failure_skips_dependent ___________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_structured_live_stream _________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_comment_and_close_webhooks_deliver ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_drv_raw_serves_running_attribute ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_settle_already_built __________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_lock_serializes_builds_without_interleaving ______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_close_after_merge_push_reused_build __________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_log_sse_stream_caps_history_backlog __________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_retention_cleanup ___________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_effect_dep_cycle_fails_discovery ____________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_log_sse_stream_neutralizes_carriage_returns ______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_build_finished_transitions _______________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_resume_includes_interrupted_building_attributes ____ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_failed_effect_reports_failure_status __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_api_builds_commit_filter ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_command_while_running_gets_notice ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_retention_skips_restarted_builds ____________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________________ ERROR at setup of test_log_tail_param _____________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_post_process_error_does_not_wedge_build ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_retention_ages_out_failed_caches ____________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_unexpected_eval_path_error_settles_build ________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_other_command_does_not_supersede ____________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_api_build_failures ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_failed_rebuild_settles_pending_effects _________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_reuse_empty_succeeded_build_posts_eval_success _____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_api_build_failures_rejects_non_positive_tail ______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_label_change_redelivers_pull_request __________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_rerun_clears_stale_eval_warnings ____________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_stale_event_reusing_old_build_does_not_cancel_newer __ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________________ ERROR at setup of test_llms_txt ________________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_build_outcome_and_restart_leave_event_history _____ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_interrupted_effects_fail_on_recovery __________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_event_broker_pushes_status_changes ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_reuse_for_default_branch_push_runs_effects _______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_restart_event_effect_reruns_with_stored_payload ____ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_events_stream_coalesces_burst _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_interrupted_effects_sweep_spares_live_effects _____ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______ ERROR at setup of test_reuse_replays_effect_statuses_to_new_commit ______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_listing_failure_recorded_on_build ___________ [gw5] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_events_stream_refreshes_visibility ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_attach_to_already_terminal_build_replays_status ____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_attribute_search ____________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___ ERROR at setup of test_cancel_during_eval_resolves_linked_eval_contexts ____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_build_page_shows_effects ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _ ERROR at setup of test_replace_schedules_preserves_last_run_for_unchanged_spec _ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_effect_log_does_not_collide_with_attribute_log _____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_build_page_shows_event_effects _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __ ERROR at setup of test_replace_schedules_tolerates_duplicate_effect_names ___ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_effect_log_raw_text __________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_post_process_paths_are_forge_scoped __________ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_store_roundtrip_and_due ________________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_effect_log_viewer_status_icon _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_effects_phase_error_keeps_succeeded_build _______ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_due_effects_window_and_bad_spec ____________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_effect_changes_notify_build_events ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________ ERROR at setup of test_chunk_args_splits_on_byte_limit ____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____ ERROR at setup of test_reuse_post_process_error_still_reports_status _____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_effects_state_api ___________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_parse_path_info_both_formats ______________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_run_recording_and_overview _______________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________________ ERROR at setup of test_pr_comment_api _____________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_reuse_with_missing_output_still_post_processes _____ [gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_final_upload_reports_and_clears_queue _________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_workload_identity_api _________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____ ERROR at setup of test_intermediates_batch_with_final_and_drop_invalid ____ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_logout_revokes_session_cookie _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_gitlab_nested_group_routes _______________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________________ ERROR at setup of test_stdin_mode _______________________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_scheduled_run_viewer_renders_ansi ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_pending_paths_survive_restart _____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_scheduled_run_viewer_cross_project_404 _________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_uploader_factory_picks_stream _____________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_scheduled_run_log_unavailable_placeholder _______ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______ ERROR at setup of test_stream_reports_per_path_and_clears_queue ________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________ ERROR at setup of test_scheduled_run_viewer_waiting_before_log ________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_stream_error_is_reported_with_message _________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_scheduled_run_history_lists_runs ____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_stream_child_crash_refeeds_pending ___________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________ ERROR at setup of test_scheduled_run_history_special_chars __________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_failure_reports_retries_and_gives_up __________ [gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________ ERROR at setup of test_scheduled_run_stream_replays_history __________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________ ERROR at setup of test_scheduled_run_notify_build_events ___________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_api_log_toc_and_text __________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_repos_and_builds ____________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fixturedef = request = > @pytest.hookimpl(wrapper=True) def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: if ( fixturedef.argname == "event_loop_policy" and fixturedef.func.__module__ != __name__ ): warnings.warn( PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING), ) asyncio_mode = _get_asyncio_mode(request.config) if not _is_asyncio_fixture_function(fixturedef.func): if asyncio_mode == Mode.STRICT: # Ignore async fixtures without explicit asyncio mark in strict mode # This applies to pytest_trio fixtures, for example return (yield) if not _is_coroutine_or_asyncgen(fixturedef.func): > return (yield) ^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _____________ ERROR at setup of test_api_log_toc_flat_log_fallback _____________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _________________ ERROR at setup of test_finished_attrs_cursor _________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError __________________ ERROR at setup of test_api_log_stream_json __________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_control_requires_token _________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_build_eval_stats_surface ________________ [gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ____________________ ERROR at setup of test_enable_disable _____________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ___________________ ERROR at setup of test_log_toc_and_text ____________________ [gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 request = > tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/nix/var/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-g...ar/nix/builds/nix-34626-734064540/pytest-of-_nixbld1/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all') @pytest.fixture(scope="module") def postgres_dsn( request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory ) -> Iterator[str]: if shutil.which("initdb") is None: pytest.skip("postgresql not available") dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_") > with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/conftest.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ________________ ERROR at setup of test_enqueue_dedupes_pending ________________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup return (yield) ^^^^^ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError _______________ ERROR at setup of test_claim_serializes_per_key ________________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError ______________ ERROR at setup of test_settle_interrupted_requeues ______________ [gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 self = def setup(self) -> None: runner_fixture_id = f"_{self._loop_scope}_scoped_runner" if runner_fixture_id not in self.fixturenames: self.fixturenames.append(runner_fixture_id) # When loop factories are configured, resolve the loop factory # fixture early so that a factory variant change cascades cache # invalidation before any async fixture checks its cache. hook_caller = self.config.hook.pytest_asyncio_loop_factories if hook_caller.get_hookimpls(): _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) > return super().setup() ^^^^^^^^^^^^^^^ /nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/tests/conftest.py:33: in postgres_dsn with ephemeral_postgres(tmp_path_factory, dbname) as dsn: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ nixbot/tests/support.py:327: in ephemeral_postgres run_sync(apply_migrations(dsn)) nixbot/tests/support.py:285: in run_sync return executor.submit(asyncio.run, coro).result(timeout=120) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:454: in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/_base.py:396: in __get_result raise self._exception /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:86: in run result = ctx.run(self.task) ^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/concurrent/futures/thread.py:73: in run return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:205: in run return runner.run(main) ^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/runners.py:128: in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_events.py:719: in run_until_complete return future.result() ^^^^^^^^^^^^^^^ nixbot/migrations.py:99: in apply_migrations migrations = load_migrations() ^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError =================================== FAILURES =================================== _____________________________ test_load_migrations _____________________________ [gw8] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 def test_load_migrations() -> None: > migrations = load_migrations() ^^^^^^^^^^^^^^^^^ nixbot/tests/test_db.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def load_migrations() -> list[Migration]: """Load migration scripts shipped with the package, ordered by version.""" migrations = [] for entry in resources.files(__package__).joinpath("migrations").iterdir(): m = _SCRIPT_RE.match(entry.name) if m is None: continue migrations.append( Migration( version=int(m.group(1)), name=m.group(2), sql=entry.read_text(), ) ) migrations.sort(key=lambda mig: mig.version) versions = [m.version for m in migrations] if len(set(versions)) != len(versions): msg = f"Duplicate migration versions: {versions}" > raise MigrationError(msg) E nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33] nixbot/migrations.py:67: MigrationError =========================== short test summary info ============================ FAILED nixbot/tests/test_db.py::test_load_migrations - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_full_lifecycle - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_failure_aggregation - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_control_buttons_hidden_without_permission - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_tree_hash_reuse - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_admin_can_restart_and_cancel - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_from_cancelled_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_pr_author_can_control_own_pr - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_migrations_idempotent - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_repo_writer_can_control_without_admin_or_authorship - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_skipped_when_drvs_gone - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_project_store_sync_and_legacy_import - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_cancel_all_requires_admin - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_distinct_per_effect - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_html_error_pages - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_failed_migration_error_not_masked - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_main_push_promotes_reused_pr_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_anonymous_sees_public_only - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_legacy_import_runs_despite_pull_based_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_cancel_all_cancels_pending_and_running_builds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_sanitizes_traversal - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_strips_ansi_from_errors - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_unauthorized_user_sees_public_only - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_edited_migration_rejected - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_merge_conflict_fails_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_legacy_import_scopes_topics_per_forge - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_cancel_all_button_admin_only - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_homepage - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_resolve_credential_path - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_authorized_user_sees_private - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_catchup_migration_repairs_pre_0033_schema - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_build_reuse_clears_pr_author_in_other_context - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_csrf_cross_origin_rejected - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_prune_missing_disabled_projects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_project_page_with_filters - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_admin_sees_everything - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_build_service_accepts_asyncpg_dsn - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_huge_attr_name_does_not_break_notify_trigger - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effects_started_flag - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_status_badge_urls - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_project_store_sync_skips_unchanged_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_admin_sees_disabled_repos_without_search - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_visibility_fetcher_and_cache_ttl_wired - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_single_attribute - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_schema_constraints - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_all_digit_branch_is_filterable - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_aggregation_generation_monotonic - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitea_hook_registration - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_non_admin_does_not_see_disabled_repos - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_unknown_attribute_is_404 - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_aclose_cancels_in_flight_tasks - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_check_run_store_round_trip - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_internal_error_not_recorded_in_failed_build_cache - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_api_token_sees_private - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitlab_heads_carry_target_branch_base - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_attribute_with_special_chars_redirects_encoded - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_pr_close_discards_queued_changes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attribute_rows_fragment_paginates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_log_path_attribute_name_sanitized - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_admin_api_token_sees_private - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_failed_status_store_component - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_admin_project_toggle - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitea_heads_encode_slashed_default_branch - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_build_branches_gates_branch_pushes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_shows_eval_warning_groups - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_forge_repo_admins_can_toggle_their_repos - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_toggle_activates_newly_enabled_project - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_cancel_interrupts_evaluation - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_failed_build_cache_component - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_gitlab_mr_build_fetches_mr_refs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_shows_per_attribute_eval_warnings - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_run_schedule - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_build_waiting_for_eval_slot_stays_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_reconcile_unbuilt_heads - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_get_or_create_build_concurrent_no_duplicates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_eval_failed_build_reevaluates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_renders_ansi_in_error - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_forge_repo_writers_can_control_their_repos - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_repo_refresh - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_pending_attribute_rows_recorded_for_crash_recovery - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitea_watermark_stops_pagination - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_commit_eval_result_atomic - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_running_build_shows_progress - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_clears_stale_error_and_warnings - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_fetch_errors_are_not_cached - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_api_enable_disable - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitlab_heads_filter_updated_after - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_cancelled_build_not_reused - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_warnings_null_when_empty - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_live_markers - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_access_cache_used - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_unknown_attribute_is_a_noop - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_api_restart_and_cancel - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attribute_history - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_metrics_unauthenticated_no_private_names - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_reuse_backfills_pr_fields - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_reconcile_watermark_store - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_failed_eval_attribute_reevaluates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_flips_stale_red_eval_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_api_token_lifecycle - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_configured_viewers_see_private - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_overview_ignores_pr_branches - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_reuse_by_other_pr_clears_both_identity_fields - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_expired_api_tokens_pruned - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_failures_not_cached - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_register_repo_hook_without_admin_warns - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_pending_build_shows_eval_blocker - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_api_token_inherits_login_groups - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_interrupted_reeval_keeps_attribute_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_branch_push_takes_over_reused_pr_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_token_creation_with_expiry - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_gitlab_mr_fetches_merge_request_refs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitlab_hook_registration - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_project_filter_escapes_like_wildcards - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_visibility.py::test_logout_invalidates_access_cache - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_cancelled_build_reschedules_attributes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_proxy_user_can_manage_api_tokens - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_pr_does_not_capture_branch_push_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[github] - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_page_out_of_range_does_not_error - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_register_repo_hook_500_with_403_in_body_raises - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_bearer_token_cannot_manage_api_tokens - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_cancelled_mid_eval_reevaluates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_complete_attribute_preserves_eval_outputs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_activity_page - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitlab_register_repo_hook_status_classification - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[gitlab] - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_api_token_controls_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_while_unwinding_waits_then_runs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_complete_attribute_marks_substituted_as_cached - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_activity_no_sentinel_on_exact_page - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_gitea_legacy_hook_delete_failure_warns - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_build_service_composition - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_cancelled_build_reuse_rebuilds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_complete_attribute_replaces_log_metadata - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_restart_attribute_while_build_running - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_activity_rows_fragment_pagination - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_forge.py::test_sync_tolerates_in_batch_duplicates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_removes_stale_logs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_inflight_share_fans_out_final_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_project_rows_fragment_filters - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_cancel_not_running_posts_forge_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_record_attributes_persists_pending_rows_with_outputs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_clears_failed_cache - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_metrics_are_gauges - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_check_rerequested_dispatch - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_stale_event_does_not_supersede_newer_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_webhook_setup_shown_to_admin_only - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_mark_attribute_building_does_not_resurrect_cancelled_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_metrics_are_cached - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_cleans_cancel_events - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_cancel_not_running_settles_attribute_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_webhook_secret_regeneration - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_static_urls_carry_content_version - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_mark_attribute_building_sets_status_and_started_at - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_settings_wired - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_cancel_attribute_not_running_reaggregates_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_retry_after_parsing - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_complete_attribute_if_unfinished_skips_terminal_rows - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_netrc_withheld_from_pr_with_instance_wide_creds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_work_retry_delay_honors_retry_after - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_pull_based_projects_synced_and_buildable - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_legacy_project_urls_redirect - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_private_repo_public_badge_bypasses_session_visibility - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_gcroots_dir_removed_after_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_report_retry - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_failed_build_cache_scoped_per_project - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_topic_does_not_hard_filter_discovery - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_legacy_redirect_hides_invisible_projects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effects_run_after_default_branch_success - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_db.py::test_eval_stats_lifecycle - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_startup_reevaluates_interrupted_eval - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_effect_item_setup_failure_settles_row - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_legacy_redirect_404s_on_ambiguous_owner_name - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_pr_worktree_config_cannot_grant_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_attribute_posts_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_rerun_of_interrupted_eval_reevaluates - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_health_and_static - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_runs_effects_again - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_rerun_resumes_building_rows_and_keeps_finished - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_404s - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_recovery_reports_interrupted_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_cancels_hung_effect - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_rerun_reevaluates_when_drv_paths_were_garbage_collected - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_viewer_and_raw - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_work_dispatch - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_rerun_single_effect - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_structured_log_endpoints - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_reeval_failure_marks_build_failed - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_restart_resets_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_runs_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_structured_log_window_caps_huge_derivation - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_gitlab_discovery_and_hook_registration - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_effects_restart_route - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_repo_list_and_toggle - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_unsupported_system_attr_does_not_block_aggregation - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attr_named_dot_txt_not_shadowed_by_raw_route - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_single_effect_restart_route - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_service.py::test_health_serves_while_startup_blocks - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_build_list_and_view - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_linked_context_reported_on_eval_failure - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attr_names_with_special_characters - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_webhook_panel_is_forge_aware - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_build_restart_cancel - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_viewer_waits_for_queued_attribute - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_match_skip_and_run - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_control.py::test_api_attr_and_effects_control - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_settles_streamed_attributes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_log_summary_attr_and_drv - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_viewer_unavailable_for_logless_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_permission_denied_records_reason - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_repo_and_build_inference - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_rows_roundtrip - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_eval_error_served_like_build_log - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_auth_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_modified_files_gate - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_items_resume_only_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_projects_and_builds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_forge_outage_is_retried - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_crash_settles_the_row - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_rows_link_refs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_forge_outage_gives_up - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attributes_sort_building_before_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_concurrent_effects_use_independent_worktrees - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_queue_sorts_active_before_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_lock_shared_with_push_effect_and_supersession - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_locked_effect_gets_shared_dedup_key - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_queue_position_is_global_and_skips_running - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_checkout_is_pr_head_without_token - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_item_not_claimable_until_dep_settles - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_openapi_docs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_build_success_enqueues_delivery - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli.py::test_log_follow_finished_attr_falls_back_to_stored_log - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_resume_skips_terminal_attributes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_failure_skips_dependent - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_structured_live_stream - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_comment_and_close_webhooks_deliver - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_drv_raw_serves_running_attribute - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_settle_already_built - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_lock_serializes_builds_without_interleaving - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_close_after_merge_push_reused_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_sse_stream_caps_history_backlog - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_retention_cleanup - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_cycle_fails_discovery - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_sse_stream_neutralizes_carriage_returns - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_build_finished_transitions - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_resume_includes_interrupted_building_attributes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_failed_effect_reports_failure_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_builds_commit_filter - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_command_while_running_gets_notice - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_retention_skips_restarted_builds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_log_tail_param - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_post_process_error_does_not_wedge_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_retention_ages_out_failed_caches - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_unexpected_eval_path_error_settles_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_other_command_does_not_supersede - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_build_failures - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_failed_rebuild_settles_pending_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_reuse_empty_succeeded_build_posts_eval_success - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_build_failures_rejects_non_positive_tail - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_label_change_redelivers_pull_request - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_rerun_clears_stale_eval_warnings - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_stale_event_reusing_old_build_does_not_cancel_newer - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_llms_txt - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_build_outcome_and_restart_leave_event_history - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_fail_on_recovery - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_event_broker_pushes_status_changes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_reuse_for_default_branch_push_runs_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_restart_event_effect_reruns_with_stored_payload - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_events_stream_coalesces_burst - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_sweep_spares_live_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_reuse_replays_effect_statuses_to_new_commit - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_deliver.py::test_listing_failure_recorded_on_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_events_stream_refreshes_visibility - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_attach_to_already_terminal_build_replays_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_attribute_search - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_cancel_during_eval_resolves_linked_eval_contexts - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_shows_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_schedules.py::test_replace_schedules_preserves_last_run_for_unchanged_spec - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effect_log_does_not_collide_with_attribute_log - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_page_shows_event_effects - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_schedules.py::test_replace_schedules_tolerates_duplicate_effect_names - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_effect_log_raw_text - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_post_process_paths_are_forge_scoped - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_schedules.py::test_store_roundtrip_and_due - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_effect_log_viewer_status_icon - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_effects_phase_error_keeps_succeeded_build - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_schedules.py::test_due_effects_window_and_bad_spec - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_effect_changes_notify_build_events - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_chunk_args_splits_on_byte_limit - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_reuse_post_process_error_still_reports_status - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_effects_state_api - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_parse_path_info_both_formats - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_schedules.py::test_run_recording_and_overview - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_pr_comment_api - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_orchestrator.py::test_reuse_with_missing_output_still_post_processes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_final_upload_reports_and_clears_queue - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_workload_identity_api - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_intermediates_batch_with_final_and_drop_invalid - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_logout_revokes_session_cookie - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_gitlab_nested_group_routes - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_stdin_mode - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_renders_ansi - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_pending_paths_survive_restart - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_cross_project_404 - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_uploader_factory_picks_stream - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_log_unavailable_placeholder - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_stream_reports_per_path_and_clears_queue - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_waiting_before_log - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_stream_error_is_reported_with_message - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_history_lists_runs - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_stream_child_crash_refeeds_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_history_special_chars - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_upload.py::test_failure_reports_retries_and_gives_up - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_stream_replays_history - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_scheduled_run_notify_build_events - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_log_toc_and_text - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli_api.py::test_repos_and_builds - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_log_toc_flat_log_fallback - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli_api.py::test_finished_attrs_cursor - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_api_log_stream_json - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli_api.py::test_control_requires_token - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_web.py::test_build_eval_stats_surface - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli_api.py::test_enable_disable - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_cli_api.py::test_log_toc_and_text - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_work_queue.py::test_enqueue_dedupes_pending - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_work_queue.py::test_claim_serializes_per_key - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ERROR nixbot/tests/test_work_queue.py::test_settle_interrupted_requeues - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... ============ 1 failed, 450 passed, 28 skipped, 328 errors in 11.04s ============