Core Components
📚 Main Components
Knitout Executer
The main analysis class that provides comprehensive execution simulation:
from knitout_interpreter.knitout_execution import Knitout_Executer
from knitout_interpreter.knitout_language.Knitout_Parser import parse_knitout
from virtual_knitting_machine.Knitting_Machine import Knitting_Machine
# Parse knitout file
parsed_instructions = parse_knitout("example.k", pattern_is_file=True)
executer = Knitout_Executer(
instructions=parsed_instructions,
knitting_machine=Knitting_Machine(),
accepted_error_types=[], # Optional: Knitting Machine Errors to ignore
knitout_version=2
)
Key Properties:
execution_time
: Number of carriage passes that will be executedleft_most_position
/right_most_position
: The range of needle positions in the executed filecarriage_passes
: List of carriage passes in the order they are executedresulting_knit_graph
: Final fabric structure
Instruction Types
The library supports all knitout operations as Python classes:
Needle Operations
Knit_Instruction
: Create new loops, stitch through the old oneTuck_Instruction
: Create new loops, keeping old onesSplit_Instruction
: Creates a loop on first specified needle while moving existing loops to the second specified needleDrop_Instruction
: Remove loops from needlesXfer_Instruction
: Transfer loops between needlesMiss_Instruction
: Position carriers without forming loopsKick_Instruction
: Specialized miss for kickbacks
Carrier Operations
In_Instruction
/Out_Instruction
: Move carriers in/out of knitting areaInhook_Instruction
/Outhook_Instruction
: Move carriers in/out of knitting area using yarn-inserting hookReleasehook_Instruction
: Release carriers on the yarn-inserting hook
Machine Control
Rack_Instruction
: Set bed alignment and all-needle modePause_Instruction
: Pause machine execution
Header Declarations
Machine_Header_Line
: Specify machine typeGauge_Header_Line
: Set machine gaugeYarn_Header_Line
: Define yarn propertiesCarriers_Header_Line
: Configure available carriersPosition_Header_Line
: Set knitting position
Carriage Pass Organization
The library automatically organizes instructions into carriage passes for efficient execution:
# Access carriage passes from the executer
for pass_index, carriage_pass in enumerate(executer.carriage_passes):
print(f"Pass {pass_index + 1}:")
print(f" Direction: {carriage_pass.direction}")
print(f" Instructions: {len(carriage_pass)}")
print(f" Needle range: {carriage_pass.carriage_pass_range()}")
print(f" Carriers used: {carriage_pass.carrier_set}")
Carriage Pass Properties:
direction
: Left-to-right or right-to-left movementcarriage_pass_range()
: Needle positions covered in this passcarrier_set
: Set of yarn carriers used in this passlen(carriage_pass)
: Number of instructions in this pass
Parser Components
Knitout Parser
The parser converts knitout text files into structured Python objects:
from knitout_interpreter.knitout_language.Knitout_Parser import parse_knitout
# Parse from file
instructions = parse_knitout("pattern.k", pattern_is_file=True)
# Parse from string
knitout_string = """
;!knitout-2
;;Machine: SWG091N2
knit + f1 1
"""
instructions = parse_knitout(knitout_string, pattern_is_file=False)
Parser Features:
Supports knitout specification v2
Handles header declarations
Validates instruction syntax
Converts to structured Python objects
Provides detailed error messages for invalid syntax
Virtual Machine Integration
Integration with Virtual Knitting Machine
The library integrates seamlessly with the virtual-knitting-machine library:
from virtual_knitting_machine.Knitting_Machine import Knitting_Machine
from knitout_interpreter.run_knitout import run_knitout
# The run_knitout function returns the final machine state
instructions, final_machine, knit_graph = run_knitout("pattern.k")
# Access machine properties
print(f"Machine has {len(final_machine.needle_beds)} needle beds")
print(f"Active needles: {final_machine.active_needle_count}")
Machine State Tracking:
Loop positions and types
Carrier positions and states
Needle bed configurations
Error detection and reporting