Skip to content

[Config] Make resolve_sequence_commands() work without device_name parameter #38

Description

@mischadiehm

Context

During the pypi-support branch work, tests were written that called resolve_sequence_commands("seq") without the required device_name parameter. The method signature requires a device name to resolve vendor-specific sequences.

Identified in PR for pypi-support branch merge.

Current State

  • resolve_sequence_commands(sequence_name, device_name) requires both parameters
  • Global sequences don't need device context to resolve
  • Current implementation always requires device_name even when looking up global sequences

Desired State

Make device_name optional for resolving global sequences:

def resolve_sequence_commands(
    self, 
    sequence_name: str, 
    device_name: str | None = None
) -> list[str] | None:
    """
    Resolve a sequence name to its commands.
    
    Args:
        sequence_name: Name of the sequence to resolve
        device_name: Optional device name for vendor/device-specific resolution
        
    Returns:
        List of commands if found, None otherwise
        
    Resolution order:
        1. Global sequences (no device_name needed)
        2. Vendor sequences (requires device_name for device_type lookup)
        3. Device sequences (requires device_name)
    """

Implementation Notes

  • Global sequences should be resolvable without device context
  • When device_name is None, only check global sequences
  • When device_name is provided, check vendor and device sequences too
  • Maintain backwards compatibility with existing callers

Files Likely Affected

  • src/network_toolkit/config.py - Modify resolve_sequence_commands signature
  • src/network_toolkit/common/sequence_manager.py - May need updates
  • tests/test_config.py - Add tests for optional device_name

Acceptance Criteria

  • Global sequences resolvable without device_name
  • Existing callers with device_name still work
  • Clear error handling when device_name needed but not provided
  • Tests cover both with and without device_name scenarios

Related

  • pypi-support branch merge PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions