Skip to content

Builder: Race conditions after #796 / strict mypy #856

@tony

Description

@tony

strict mypy #796 makes certain uncovered loading scenarios error

  • tmuxp load when session already exists
  • Launching a new tmux server with default socket path and socket name
Details
eduflow is already running. Attach? [Y/n] y
Traceback (most recent call last):
  File "/home/d/.cache/pypoetry/virtualenvs/tmuxp-m3jEKDEh-py3.11/bin/tmuxp", line 6, in <module>
    sys.exit(cli.cli())
             ^^^^^^^^^
  File "~/projects/python/tmuxp/src/tmuxp/cli/__init__.py", line 134, in cli
    command_load(
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 640, in command_load
    load_workspace(
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 416, in load_workspace
    _reattach(builder)
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 161, in _reattach
    assert builder.session is not None
           ^^^^^^^^^^^^^^^
AttributeError: 'WorkspaceBuilder' object has no attribute 'session'

Declone to loading existing session

Details
❯ tmuxp load ~/work/python/libvcs
[Loading] ~/projects/python/libvcs/.tmuxp.yaml
Already inside TMUX, switch to session? yes/no
Or (a)ppend windows in the current active session?
[y/n/a] - (y, n, a): n
Traceback (most recent call last):
  File "/home/d/.cache/pypoetry/virtualenvs/tmuxp-m3jEKDEh-py3.11/bin/tmuxp", line 6, in <module>
    sys.exit(cli.cli())
             ^^^^^^^^^
  File "~/projects/python/tmuxp/src/tmuxp/cli/__init__.py", line 134, in cli
    command_load(
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 640, in command_load
    load_workspace(
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 450, in load_workspace
    _load_detached(builder)
  File "~/projects/python/tmuxp/src/tmuxp/cli/load.py", line 217, in _load_detached
    builder.build()
  File "~/projects/python/tmuxp/src/tmuxp/workspace/builder.py", line 293, in build
    for w, wconf in self.iter_create_windows(session, append):
  File "~/projects/python/tmuxp/src/tmuxp/workspace/builder.py", line 416, in iter_create_windows
    w.set_window_option(key, val)
  File "~/projects/python/libtmux/src/libtmux/window.py", line 346, in set_window_option
    self.refresh()
  File "~/projects/python/libtmux/src/libtmux/window.py", line 84, in refresh
    return super()._refresh(
           ^^^^^^^^^^^^^^^^^
  File "~/projects/python/libtmux/src/libtmux/neo.py", line 174, in _refresh
    obj = fetch_obj(
          ^^^^^^^^^^
  File "~/projects/python/libtmux/src/libtmux/neo.py", line 242, in fetch_obj
    assert obj is not None
AssertionError

Intermittently during tmuxp load

Details
Done in 1.87s.
Traceback (most recent call last):
  File "~/.local/bin/tmuxp", line 8, in <module>
    sys.exit(cli.cli())
             ^^^^^^^^^
  File "~/projects/tmuxp/src/tmuxp/cli/__init__.py", line 134, in cli
    command_load(
  File "~/projects/tmuxp/src/tmuxp/cli/load.py", line 640, in command_load
    load_workspace(
  File "~/projects/tmuxp/src/tmuxp/cli/load.py", line 452, in load_workspace
    _load_attached(builder, detached)
  File "~/projects/tmuxp/src/tmuxp/cli/load.py", line 184, in _load_attached
    builder.build()
  File "~/projects/tmuxp/src/tmuxp/workspace/builder.py", line 289, in build
    for w, wconf in self.iter_create_windows(session, append):
  File "~/projects/tmuxp/src/tmuxp/workspace/builder.py", line 411, in iter_create_windows
    w.set_window_option(key, val)
  File "~/.local/lib/python3.11/site-packages/libtmux/window.py", line 346, in set_window_option
    self.refresh()
  File "~/.local/lib/python3.11/site-packages/libtmux/window.py", line 84, in refresh
    return super()._refresh(
           ^^^^^^^^^^^^^^^^^
  File "~/.local/lib/python3.11/site-packages/libtmux/neo.py", line 174, in _refresh
    obj = fetch_obj(
          ^^^^^^^^^^
  File "~/.local/lib/python3.11/site-packages/libtmux/neo.py", line 242, in fetch_obj
    assert obj is not None
AssertionError

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions