Skip to content

Conversation

tony
Copy link
Member

@tony tony commented Jan 4, 2025

Changes

chore: Support PEP 563 from __future__ import annotations

Using PEP 563's deferred resolution of annotations avoids the computation cost of symbols we imported solely used for type-checking.

Ruff:

PEP 563: https://peps.python.org/pep-0563/

Copy link

codecov bot commented Jan 4, 2025

Codecov Report

Attention: Patch coverage is 96.05263% with 3 lines in your changes missing coverage. Please review.

Project coverage is 72.94%. Comparing base (0aa1c5d) to head (5b04bf4).
Report is 9 commits behind head on master.

Files with missing lines Patch % Lines
src/tmuxp/cli/freeze.py 83.33% 2 Missing ⚠️
src/tmuxp/util.py 75.00% 1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@ ## master #957 +/- ## ========================================== + Coverage 70.27% 72.94% +2.67%  ========================================== Files 26 26 Lines 1938 1841 -97 Branches 365 350 -15 ========================================== - Hits 1362 1343 -19  + Misses 456 393 -63  + Partials 120 105 -15 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@tony tony force-pushed the future-annotations branch 3 times, most recently from 678c3b7 to 25af429 Compare January 4, 2025 15:23
@tony tony force-pushed the future-annotations branch 6 times, most recently from 77f99bf to c7dd59f Compare January 4, 2025 16:18
@tony tony force-pushed the future-annotations branch 2 times, most recently from 87819ab to 581689a Compare January 4, 2025 16:24
tony added 3 commits January 4, 2025 10:26
Fixed 393 errors: - conftest.py: 1 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) - docs/_ext/aafig.py: 6 × UP007 (non-pep604-annotation) 3 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - docs/conf.py: 2 × UP007 (non-pep604-annotation) 2 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - src/tmuxp/__about__.py: 1 × I002 (missing-required-import) - src/tmuxp/__init__.py: 1 × I002 (missing-required-import) - src/tmuxp/_internal/config_reader.py: 8 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - src/tmuxp/_internal/types.py: 1 × I002 (missing-required-import) - src/tmuxp/cli/__init__.py: 3 × UP037 (quoted-annotation) 2 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) 1 × I001 (unsorted-imports) - src/tmuxp/cli/convert.py: 2 × UP007 (non-pep604-annotation) 1 × T201 (print) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - src/tmuxp/cli/debug_info.py: 1 × UP007 (non-pep604-annotation) 1 × TC003 (typing-only-standard-library-import) 1 × I002 (missing-required-import) - src/tmuxp/cli/edit.py: 2 × TC003 (typing-only-standard-library-import) 2 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × I001 (unsorted-imports) - src/tmuxp/cli/freeze.py: 10 × UP007 (non-pep604-annotation) 5 × T201 (print) 3 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) 1 × F841 (unused-variable) - src/tmuxp/cli/import_config.py: 3 × UP007 (non-pep604-annotation) 1 × TC003 (typing-only-standard-library-import) 1 × I002 (missing-required-import) - src/tmuxp/cli/load.py: 15 × UP007 (non-pep604-annotation) 2 × T201 (print) 1 × UP037 (quoted-annotation) 1 × E303 (too-many-blank-lines) 1 × TC002 (typing-only-third-party-import) 1 × I001 (unsorted-imports) 1 × B007 (unused-loop-control-variable) 1 × I002 (missing-required-import) 1 × TC001 (typing-only-first-party-import) - src/tmuxp/cli/ls.py: 1 × UP007 (non-pep604-annotation) 1 × TC003 (typing-only-standard-library-import) 1 × I002 (missing-required-import) - src/tmuxp/cli/shell.py: 8 × UP007 (non-pep604-annotation) 2 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - src/tmuxp/cli/utils.py: 19 × UP007 (non-pep604-annotation) 3 × UP037 (quoted-annotation) 2 × TC003 (typing-only-standard-library-import) 1 × I002 (missing-required-import) 1 × I001 (unsorted-imports) - src/tmuxp/exc.py: 4 × UP007 (non-pep604-annotation) 1 × F401 (unused-import) 1 × I002 (missing-required-import) 1 × I001 (unsorted-imports) - src/tmuxp/log.py: 2 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) - src/tmuxp/plugin.py: 12 × UP007 (non-pep604-annotation) 12 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - src/tmuxp/shell.py: 18 × UP037 (quoted-annotation) 6 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - src/tmuxp/types.py: 1 × I002 (missing-required-import) - src/tmuxp/util.py: 11 × UP037 (quoted-annotation) 8 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) 1 × I001 (unsorted-imports) - src/tmuxp/workspace/builder.py: 5 × UP007 (non-pep604-annotation) 2 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - src/tmuxp/workspace/constants.py: 1 × I002 (missing-required-import) - src/tmuxp/workspace/finders.py: 4 × UP007 (non-pep604-annotation) 3 × UP037 (quoted-annotation) 1 × TC003 (typing-only-standard-library-import) 1 × I001 (unsorted-imports) 1 × I002 (missing-required-import) 1 × TC001 (typing-only-first-party-import) - src/tmuxp/workspace/freezer.py: 2 × UP007 (non-pep604-annotation) 2 × TC002 (typing-only-third-party-import) 2 × I001 (unsorted-imports) 1 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - src/tmuxp/workspace/importers.py: 1 × I002 (missing-required-import) - src/tmuxp/workspace/loader.py: 3 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) - src/tmuxp/workspace/validation.py: 1 × I002 (missing-required-import) - tests/cli/test_cli.py: 2 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - tests/cli/test_convert.py: 1 × I001 (unsorted-imports) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - tests/cli/test_debug_info.py: 3 × I001 (unsorted-imports) 1 × TC003 (typing-only-standard-library-import) 1 × I002 (missing-required-import) 1 × TC002 (typing-only-third-party-import) - tests/cli/test_freeze.py: 2 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) 1 × I001 (unsorted-imports) - tests/cli/test_import.py: 1 × I001 (unsorted-imports) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - tests/cli/test_load.py: 22 × UP037 (quoted-annotation) 1 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC002 (typing-only-third-party-import) - tests/cli/test_ls.py: 1 × I001 (unsorted-imports) 1 × TC002 (typing-only-third-party-import) 1 × I002 (missing-required-import) - tests/cli/test_shell.py: 3 × UP037 (quoted-annotation) 1 × TC002 (typing-only-third-party-import) 1 × PYI055 (unnecessary-type-union) 1 × I001 (unsorted-imports) 1 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC003 (typing-only-standard-library-import) - tests/constants.py: 1 × I002 (missing-required-import) - tests/fixtures/__init__.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/__init__.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/layouts.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/test1.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/test2.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/test3.py: 1 × I002 (missing-required-import) - tests/fixtures/import_teamocil/test4.py: 1 × I002 (missing-required-import) - tests/fixtures/import_tmuxinator/__init__.py: 1 × I002 (missing-required-import) - tests/fixtures/import_tmuxinator/test1.py: 1 × I002 (missing-required-import) - tests/fixtures/import_tmuxinator/test2.py: 1 × I002 (missing-required-import) - tests/fixtures/import_tmuxinator/test3.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/partials/_types.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/partials/all_pass.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/partials/libtmux_version_fail.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/partials/test_plugin_helpers.py: 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) - tests/fixtures/pluginsystem/partials/tmux_version_fail.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/partials/tmuxp_version_fail.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_awf/tmuxp_test_plugin_awf/plugin.py: 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_bs/tmuxp_test_plugin_bs/plugin.py: 1 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_bwb/tmuxp_test_plugin_bwb/plugin.py: 1 × UP037 (quoted-annotation) 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_fail/tmuxp_test_plugin_fail/plugin.py: 1 × I002 (missing-required-import) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_owc/tmuxp_test_plugin_owc/plugin.py: 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) - tests/fixtures/pluginsystem/plugins/tmuxp_test_plugin_r/tmuxp_test_plugin_r/plugin.py: 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) - tests/fixtures/structures.py: 1 × I002 (missing-required-import) - tests/fixtures/utils.py: 2 × UP007 (non-pep604-annotation) 1 × F401 (unused-import) 1 × I002 (missing-required-import) - tests/fixtures/workspace/__init__.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/expand1.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/expand2.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/expand_blank.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/sample_workspace.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/shell_command_before.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/shell_command_before_session.py: 1 × I002 (missing-required-import) - tests/fixtures/workspace/trickle.py: 1 × I002 (missing-required-import) - tests/test_plugin.py: 1 × I002 (missing-required-import) - tests/test_shell.py: 1 × I002 (missing-required-import) - tests/test_util.py: 1 × I001 (unsorted-imports) 1 × I002 (missing-required-import) 1 × TC002 (typing-only-third-party-import) - tests/tests/test_helpers.py: 1 × I001 (unsorted-imports) 1 × TC002 (typing-only-third-party-import) 1 × I002 (missing-required-import) - tests/workspace/conftest.py: 1 × I002 (missing-required-import) - tests/workspace/test_builder.py: 2 × UP037 (quoted-annotation) 2 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) 1 × TC002 (typing-only-third-party-import) - tests/workspace/test_config.py: 7 × UP037 (quoted-annotation) 1 × UP007 (non-pep604-annotation) 1 × I002 (missing-required-import) - tests/workspace/test_finder.py: 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) - tests/workspace/test_freezer.py: 2 × I001 (unsorted-imports) 1 × I002 (missing-required-import) 1 × UP037 (quoted-annotation) 1 × TC003 (typing-only-standard-library-import) 1 × TC002 (typing-only-third-party-import) - tests/workspace/test_import_teamocil.py: 1 × I002 (missing-required-import) - tests/workspace/test_import_tmuxinator.py: 1 × I002 (missing-required-import) Found 1480 errors (393 fixed, 1087 remaining). 83 files reformatted, 16 files left unchanged uv run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; uv run ruff format .
@tony tony force-pushed the future-annotations branch from 581689a to 5b04bf4 Compare January 4, 2025 16:26
@tony tony merged commit 0d73f64 into master Jan 4, 2025
19 checks passed
@tony tony deleted the future-annotations branch January 4, 2025 16:29
"---------------------------------------------------------------"
"\n"
"Freeze does its best to snapshot live tmux sessions.\n",
)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These were added back in subsequent commit

if answer_yes:
with open(newfile, "w", encoding=locale.getpreferredencoding(False)) as buf:
buf.write(new_workspace)
print(f"New workspace file saved to <{newfile}>.")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These were added back in subsequent commit

tony added a commit that referenced this pull request Jan 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant