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-37012-1646484975/ 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-37012-1646484975/ 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-37012-1646484975/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)) ready: 2/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)) /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)) /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)) ready: 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)) 10 workers [807 items] ..................ssssss.............sss................................ [ 8%] ........................................................................ [ 17%] .........F....................................................EE.EEEEEEE [ 26%] EEEE.EEEEEE.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEE [ 35%] EEEEE.E.E.EEEEEs..EE.EEEEE.EEEEEE.EEEEEEEE.EEEE.EEEE.E..E..sEEEEEEEEEEEE [ 44%] EEEEEEEEEEEEE.E.EEE.EEEEEEEEEEEEEEEEEEEEEEEE..........EEE.EEE........... [ 53%] ......E..E.E.EE..EEEEEEE.EEEEEEE.EEEEEEEE.E.Essssssssssss...........E... [ 62%] .........E..............EEEEEEEE.EEE.EE.EEE..EEE.EEEEEEE..EE.EEEEEEE.E.. [ 71%] ...............EEEE.EEEEE.EEE.E.EE.EE.....E.EE......E.EEEEEE.....EEEEE.E [ 80%] EE.EEEE.EEE....EE...E...EEEEEEEEE.EEssss....E.......E.E.EEE.EE........E. [ 89%] .EEEE.E...EEEs.EEEEE.......EEE.....................F.................... [ 98%] ............... [100%] ==================================== ERRORS ==================================== _______ 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_migrations_idempotent _________________ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_migration_error_not_masked ___________ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_edited_migration_rejected _______________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 _______ [gw9] 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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_huge_attr_name_does_not_break_notify_trigger ______ [gw9] 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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_schema_constraints ___________________ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_check_run_store_round_trip _______________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_failed_status_store_component _____________ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_failed_build_cache_component ______________ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_get_or_create_build_concurrent_no_duplicates ______ [gw9] 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_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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_commit_eval_result_atomic _______________ [gw9] 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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_cancelled_build_not_reused _______________ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_reuse_backfills_pr_fields _______________ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_by_other_pr_clears_both_identity_fields _____ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_branch_push_takes_over_reused_pr_build _________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_does_not_capture_branch_push_build _________ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_complete_attribute_preserves_eval_outputs _______ [gw9] 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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_complete_attribute_marks_substituted_as_cached _____ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_complete_attribute_replaces_log_metadata ________ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_record_attributes_persists_pending_rows_with_outputs __ [gw9] 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_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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_does_not_resurrect_cancelled_rows _ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_mark_attribute_building_sets_status_and_started_at ___ [gw9] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_complete_attribute_if_unfinished_skips_terminal_rows __ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_failed_build_cache_scoped_per_project _________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_stats_lifecycle __________________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ___________________ [gw6] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_permission_denied_records_reason ____________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_repo_list_and_toggle __________________ [gw5] 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_modified_files_gate __________________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_build_list_and_view __________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 ________________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_build_restart_cancel __________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 _________________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_summary_attr_and_drv ________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 _____ [gw6] 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 ________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ___________ [gw6] 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_auth_status ______________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ____________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_comment_and_close_webhooks_deliver ___________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_close_after_merge_push_reused_build __________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_build_finished_transitions _______________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_resume_skips_terminal_attributes ____________ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ___________ [gw6] 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_already_built __________________ [gw9] 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_other_command_does_not_supersede ____________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ___________________ [gw9] 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 ___ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 __________ [gw6] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_resume_includes_interrupted_building_attributes ____ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 _____ [gw6] 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_retention_skips_restarted_builds ____________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_restart_event_effect_reruns_with_stored_payload ____ [gw6] 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 ____________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_listing_failure_recorded_on_build ___________ [gw6] 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_rebuild_settles_pending_effects _________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_rerun_clears_stale_eval_warnings ____________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_interrupted_effects_fail_on_recovery __________ [gw9] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_interrupted_effects_sweep_spares_live_effects _____ [gw9] 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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 ____________________ [gw5] 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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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_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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/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 _________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 _________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 _____________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 ____________________ [gw5] 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-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen.../nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw5'), _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 ________________ [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_claim_serializes_per_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_settle_interrupted_requeues ______________ [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 =================================== FAILURES =================================== _____________________________ test_load_migrations _____________________________ [gw9] 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 _____________________________ test_executor_cancel _____________________________ [gw2] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 fut = > timeout = 5 async def wait_for(fut, timeout): """Wait for the single Future or coroutine to complete, with timeout. Coroutine will be wrapped in Task. Returns result of the Future or coroutine. When a timeout occurs, it cancels the task and raises TimeoutError. To avoid the task cancellation, wrap it in shield(). If the wait is cancelled, the task is also cancelled. If the task suppresses the cancellation and returns a value instead, that value is returned. This function is a coroutine. """ # The special case for timeout <= 0 is for the following case: # # async def test_waitfor(): # func_started = False # # async def func(): # nonlocal func_started # func_started = True # # try: # await asyncio.wait_for(func(), 0) # except asyncio.TimeoutError: # assert not func_started # else: # assert False # # asyncio.run(test_waitfor()) if timeout is not None and timeout <= 0: fut = ensure_future(fut) if fut.done(): return fut.result() await _cancel_and_wait(fut) try: return fut.result() except exceptions.CancelledError as exc: raise TimeoutError from exc async with timeouts.timeout(timeout): > return await fut ^^^^^^^^^ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:488: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ nixbot/executor.py:845: in build_attribute outcome, transient = await self._run_once( nixbot/executor.py:903: in _run_once await group.reap() /nix/store/q1xj08iyxwsngn10f0pbp8b0bcdgfdq2-python3.14-nixbot-effects/lib/python3.14/site-packages/nixbot_effects/proc.py:82: in reap await self.proc.wait() /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/subprocess.py:137: in wait return await self._transport._wait() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_UnixSubprocessTransport pid=38337 returncode=-9 stdout=<_UnixReadPipeTransport fd=16 polling>> async def _wait(self): """Wait until the process exit and return the process return code. This method is a coroutine.""" if self._returncode is not None: return self._returncode waiter = self._loop.create_future() self._exit_waiters.append(waiter) > return await waiter ^^^^^^^^^^^^ E asyncio.exceptions.CancelledError /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/base_subprocess.py:255: CancelledError The above exception was the direct cause of the following exception: tmp_path = PosixPath('/nix/var/nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw2/test_executor_cancel0') fake_nix = PosixPath('/nix/var/nix/builds/nix-37012-1646484975/pytest-of-_nixbld11/pytest-0/popen-gw2/test_executor_cancel0/control') async def test_executor_cancel(tmp_path: Path, fake_nix: Path) -> None: fake_nix.write_text("hang") executor = NixBuildExecutor(FairScheduler(2), BuildSettings(log_dir=tmp_path)) writer = LogWriter(path=tmp_path / "log.zst") cancel_event = asyncio.Event() task = asyncio.create_task( executor.build_attribute("b", mk_job(), writer, tmp_path, cancel_event) ) await asyncio.sleep(0.2) cancel_event.set() > outcome = await asyncio.wait_for(task, timeout=5) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nixbot/tests/test_executor.py:374: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/tasks.py:487: in wait_for async with timeouts.timeout(timeout): ^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = exc_type = exc_val = CancelledError(), exc_tb = async def __aexit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None, ) -> bool | None: assert self._state in (_State.ENTERED, _State.EXPIRING) if self._timeout_handler is not None: self._timeout_handler.cancel() self._timeout_handler = None if self._state is _State.EXPIRING: self._state = _State.EXPIRED if self._task.uncancel() <= self._cancelling and exc_type is not None: # Since there are no new cancel requests, we're # handling this. if issubclass(exc_type, exceptions.CancelledError): > raise TimeoutError from exc_val E TimeoutError /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/asyncio/timeouts.py:115: TimeoutError =========================== short test summary info ============================ FAILED nixbot/tests/test_db.py::test_load_migrations - nixbot.migrations.MigrationError: Duplicate migration versions: [1, 2, 3, 4... FAILED nixbot/tests/test_executor.py::test_executor_cancel - TimeoutError 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_service.py::test_scheduled_worktree_id_sanitizes_traversal - 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_forge.py::test_project_store_sync_and_legacy_import - 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_service.py::test_resolve_credential_path - 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_orchestrator.py::test_full_lifecycle - 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_db.py::test_failed_migration_error_not_masked - 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_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_failure_aggregation - 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_web.py::test_project_page_with_filters - 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_db.py::test_edited_migration_rejected - 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_visibility.py::test_anonymous_sees_public_only - 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_forge.py::test_legacy_import_scopes_topics_per_forge - 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_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_service.py::test_aclose_cancels_in_flight_tasks - 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_catchup_migration_repairs_pre_0033_schema - 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_forge.py::test_prune_missing_disabled_projects - 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_control.py::test_cancel_all_requires_admin - 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_visibility.py::test_authorized_user_sees_private - 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_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_skips_unchanged_rows - 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_control.py::test_cancel_all_cancels_pending_and_running_builds - 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_branches_gates_branch_pushes - 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_orchestrator.py::test_main_push_promotes_reused_pr_build - 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_forge.py::test_gitea_hook_registration - 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_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_restart_gitlab_mr_build_fetches_mr_refs - 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_web.py::test_build_page_shows_eval_warning_groups - 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_gitlab_heads_carry_target_branch_base - 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_visibility.py::test_non_admin_does_not_see_disabled_repos - 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_shows_per_attribute_eval_warnings - 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_failed_status_store_component - 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_visibility.py::test_api_token_sees_private - 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_control.py::test_restart_unknown_attribute_is_404 - 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_orchestrator.py::test_effects_started_flag - 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_forge.py::test_reconcile_unbuilt_heads - 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_admin_api_token_sees_private - 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_web.py::test_running_build_shows_progress - 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_orchestrator.py::test_aggregation_generation_monotonic - 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_service.py::test_restart_unknown_attribute_is_a_noop - 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_admin_project_toggle - 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_db.py::test_commit_eval_result_atomic - 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_service.py::test_restart_failed_eval_attribute_reevaluates - 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_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_toggle_activates_newly_enabled_project - 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_db.py::test_cancelled_build_not_reused - 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_fetch_errors_are_not_cached - 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_service.py::test_interrupted_reeval_keeps_attribute_rows - 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_forge.py::test_reconcile_watermark_store - 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_visibility.py::test_access_cache_used - 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_service.py::test_restart_cancelled_build_reschedules_attributes - 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_web.py::test_pending_build_shows_eval_blocker - 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_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_by_other_pr_clears_both_identity_fields - 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_web.py::test_project_filter_escapes_like_wildcards - 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_service.py::test_restart_cancelled_mid_eval_reevaluates - 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_visibility.py::test_configured_viewers_see_private - 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_db.py::test_branch_push_takes_over_reused_pr_build - 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_service.py::test_restart_while_unwinding_waits_then_runs - 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_visibility.py::test_api_token_inherits_login_groups - 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_api_token_lifecycle - 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_db.py::test_pr_does_not_capture_branch_push_build - 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_orchestrator.py::test_eval_warnings_null_when_empty - 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_control.py::test_expired_api_tokens_pruned - 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_web.py::test_activity_no_sentinel_on_exact_page - 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_service.py::test_cancel_not_running_posts_forge_status - 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_token_creation_with_expiry - 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_gitea_legacy_hook_delete_failure_warns - 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_service.py::test_check_rerequested_dispatch - 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_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_sync_tolerates_in_batch_duplicates - 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_settles_attribute_rows - 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_web.py::test_metrics_are_gauges - 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_cancel_attribute_not_running_reaggregates_build - 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_orchestrator.py::test_gitlab_mr_fetches_merge_request_refs - 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_service.py::test_pull_based_projects_synced_and_buildable - 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_rerun_fetches_forge_change_request_refs[github] - 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_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_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_static_urls_carry_content_version - 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_rerun_fetches_forge_change_request_refs[gitlab] - 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_service.py::test_startup_reevaluates_interrupted_eval - 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_control.py::test_restart_clears_failed_cache - 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_service.py::test_rerun_of_interrupted_eval_reevaluates - 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_web.py::test_private_repo_public_badge_bypasses_session_visibility - 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_failed_build_cache_scoped_per_project - 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_service.py::test_rerun_resumes_building_rows_and_keeps_finished - 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_control.py::test_webhook_secret_regeneration - 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_web.py::test_legacy_redirect_404s_on_ambiguous_owner_name - 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_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_retry_after_parsing - 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_eval_failure_cleans_cancel_events - 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_work_retry_delay_honors_retry_after - 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_service.py::test_gitlab_discovery_and_hook_registration - 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_control.py::test_report_retry - 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_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_service.py::test_health_serves_while_startup_blocks - 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_structured_log_endpoints - 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_restart_attribute_posts_pending - 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_orchestrator.py::test_effects_run_after_default_branch_success - 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_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_orchestrator.py::test_pr_worktree_config_cannot_grant_effects - 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_work_dispatch - 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_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_restart_resets_effects - 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_orchestrator.py::test_rerun_effects_cancels_hung_effect - 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_deliver.py::test_permission_denied_records_reason - 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_control.py::test_single_effect_restart_route - 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_cli.py::test_repo_list_and_toggle - 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_web.py::test_api_projects_and_builds - 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_orchestrator.py::test_recovery_rerun_runs_effects - 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_deliver.py::test_forge_outage_is_retried - 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_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_unsupported_system_attr_does_not_block_aggregation - 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_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_cli.py::test_log_summary_attr_and_drv - 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_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_cli.py::test_repo_and_build_inference - 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_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_cli.py::test_auth_status - 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_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_web.py::test_structured_live_stream - 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_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_orchestrator.py::test_effect_crash_settles_the_row - 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_orchestrator.py::test_concurrent_effects_use_independent_worktrees - 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_web.py::test_log_sse_stream_neutralizes_carriage_returns - 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_locked_effect_gets_shared_dedup_key - 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_settle_already_built - 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_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_log_tail_param - 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_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_deliver.py::test_label_change_redelivers_pull_request - 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_orchestrator.py::test_effect_dep_failure_skips_dependent - 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_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_build_outcome_and_restart_leave_event_history - 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_recovery.py::test_retention_skips_restarted_builds - 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_orchestrator.py::test_effect_dep_cycle_fails_discovery - 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_recovery.py::test_retention_ages_out_failed_caches - 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_web.py::test_events_stream_coalesces_burst - 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_deliver.py::test_listing_failure_recorded_on_build - 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_web.py::test_events_stream_refreshes_visibility - 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_rerun_clears_stale_eval_warnings - 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_unexpected_eval_path_error_settles_build - 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_build_page_shows_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_recovery.py::test_interrupted_effects_sweep_spares_live_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_web.py::test_build_page_shows_event_effects - 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_effect_log_raw_text - 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_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_viewer_status_icon - 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_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_changes_notify_build_events - 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_effects_state_api - 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_pr_comment_api - 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_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_workload_identity_api - 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_logout_revokes_session_cookie - 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_web.py::test_gitlab_nested_group_routes - 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_effects_phase_error_keeps_succeeded_build - 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_web.py::test_scheduled_run_viewer_renders_ansi - 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_scheduled_run_viewer_cross_project_404 - 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_scheduled_run_log_unavailable_placeholder - 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_intermediates_batch_with_final_and_drop_invalid - 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_stdin_mode - 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_pending_paths_survive_restart - 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_uploader_factory_picks_stream - 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_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_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_upload.py::test_stream_error_is_reported_with_message - 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_api_log_toc_flat_log_fallback - 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_stream_json - 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_build_eval_stats_surface - 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_cli_api.py::test_control_requires_token - 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... ============ 2 failed, 449 passed, 28 skipped, 328 errors in 12.78s ============