types(workspace-imports) Example typings via NotRequried#981
types(workspace-imports) Example typings via NotRequried#981
NotRequried#981Conversation
Reviewer's GuideThis PR enriches the workspace-imports typing by introducing comprehensive TypedDict definitions with NotRequired for optional fields and updates importer functions to reference the new WorkspaceConfig via TYPE_CHECKING, inline comments, and enhanced docstrings. Class Diagram of New Tmuxp Configuration TypesclassDiagram
class ShellCommandConfig {
+cmd: str
+enter: bool (optional)
+suppress_history: bool (optional)
}
class PaneConfig {
+shell_command: ShellCommandValue (optional)
+shell_command_before: ShellCommandValue (optional)
+start_directory: str (optional)
+environment: dict[str, str] (optional)
+focus: str | bool (optional)
+suppress_history: bool (optional)
}
class WindowConfig {
+window_name: str
+start_directory: str (optional)
+shell_command_before: ShellCommandValue (optional)
+layout: str (optional)
+options: dict[str, Any] (optional)
+options_after: dict[str, Any] (optional)
+environment: dict[str, str] (optional)
+focus: str | bool (optional)
+suppress_history: bool (optional)
+panes: list[PaneValue] (optional)
}
class WorkspaceConfig {
+session_name: str | None
+start_directory: str (optional)
+before_script: str (optional)
+shell_command_before: ShellCommandValue (optional)
+shell_command: ShellCommandValue (optional)
+environment: dict[str, str] (optional)
+global_options: dict[str, Any] (optional)
+options: dict[str, Any] (optional)
+config: str (optional)
+socket_name: str (optional)
+plugins: list[str | PluginConfigSchema] (optional)
+suppress_history: bool (optional)
+windows: list[WindowConfig]
}
class PluginConfigSchema {
+plugin_name: str
+tmux_min_version: str (optional)
+tmux_max_version: str (optional)
+tmux_version_incompatible: list[str] (optional)
+tmuxp_min_version: str (optional)
+tmuxp_max_version: str (optional)
+tmuxp_version_incompatible: list[str] (optional)
}
WorkspaceConfig "1" *-- "0..*" WindowConfig : windows
WorkspaceConfig "1" o-- "0..*" PluginConfigSchema : plugins
WindowConfig "1" *-- "0..*" PaneConfig : panes (via PaneValue)
PaneConfig ..> ShellCommandConfig : uses (via ShellCommandValue)
WindowConfig ..> ShellCommandConfig : uses (via ShellCommandValue)
WorkspaceConfig ..> ShellCommandConfig : uses (via ShellCommandValue)
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey @tony - I've reviewed your changes and they look great!
Here's what I looked at during the review
- 🟡 General issues: 1 issue found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| Returns | ||
| ------- | ||
| dict | ||
| A dictionary conforming to WorkspaceConfig structure. | ||
| """ | ||
| tmuxp_workspace: dict[str, t.Any] = {} | ||
| tmuxp_workspace: dict[str, t.Any] = {} # Will conform to WorkspaceConfig at the end |
There was a problem hiding this comment.
suggestion: Annotate tmuxp_workspace with WorkspaceConfig type
Since WorkspaceConfig is already imported under TYPE_CHECKING, use it to annotate tmuxp_workspace and update the function's return type for better type safety.
| Returns | |
| ------- | |
| dict | |
| A dictionary conforming to WorkspaceConfig structure. | |
| """ | |
| tmuxp_workspace: dict[str, t.Any] = {} | |
| tmuxp_workspace: dict[str, t.Any] = {} # Will conform to WorkspaceConfig at the end | |
| from tmuxp.types import WorkspaceConfig | |
| def import_tmuxinator(workspace_dict: dict[str, t.Any]) -> WorkspaceConfig: | |
| """Return tmuxp workspace from a `tmuxinator`_ yaml workspace. | |
| Returns | |
| ------- | |
| WorkspaceConfig | |
| A dictionary conforming to WorkspaceConfig structure. | |
| """ | |
| tmuxp_workspace: WorkspaceConfig = {} # Will conform to WorkspaceConfig at the end |
7466b20 to
ea9a61f
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #981 +/- ##
==========================================
+ Coverage 81.96% 82.17% +0.20%
==========================================
Files 28 28
Lines 2545 2586 +41
Branches 485 484 -1
==========================================
+ Hits 2086 2125 +39
- Misses 328 329 +1
- Partials 131 132 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Summary by Sourcery
Add example typings for workspace imports by introducing detailed TypedDict schemas and updating importers to reference the new workspace configuration types
Enhancements: