Source code for ptouch.tape

# SPDX-FileCopyrightText: 2024-2026 Nicolai Buchwitz <nb@tipi-net.de>
#
# SPDX-License-Identifier: LGPL-2.1-or-later

"""Tape types for Brother P-touch label printers."""

import warnings
from abc import ABC


[docs] class Tape(ABC): """Abstract base class for P-touch tapes. Subclasses must define width_mm as a class attribute. Attributes ---------- width_mm : int Width of the tape in millimeters (class attribute). """ width_mm: int
[docs] class Tape3_5mm(Tape): """3.5mm tape. Note: Media size reported by printer is 4mm. """ width_mm = 4
[docs] class Tape6mm(Tape): """6mm tape.""" width_mm = 6
[docs] class Tape9mm(Tape): """9mm tape.""" width_mm = 9
[docs] class Tape12mm(Tape): """12mm tape.""" width_mm = 12
[docs] class Tape18mm(Tape): """18mm tape.""" width_mm = 18
[docs] class Tape24mm(Tape): """24mm tape.""" width_mm = 24
[docs] class Tape36mm(Tape): """36mm tape.""" width_mm = 36
[docs] class HeatShrinkTube(Tape): """Base class for heat shrink tubes (HSe series). Heat shrink tubes shrink when heated to wrap around cables and wires. They have different printable area constraints than laminated tapes. Note: Heat shrink tubes are NOT supported on PT-P910BT. """ pass
# ============================================================================= # Heat Shrink Tube 2:1 Series (shrinks to 1/2 original diameter) # =============================================================================
[docs] class HeatShrinkTube5_8mm(HeatShrinkTube): """5.8mm heat shrink tube (2:1 series).""" width_mm = 6 # Media size reported by printer
[docs] class HeatShrinkTube8_8mm(HeatShrinkTube): """8.8mm heat shrink tube (2:1 series).""" width_mm = 9 # Media size reported by printer
[docs] class HeatShrinkTube11_7mm(HeatShrinkTube): """11.7mm heat shrink tube (2:1 series).""" width_mm = 12 # Media size reported by printer
[docs] class HeatShrinkTube17_7mm(HeatShrinkTube): """17.7mm heat shrink tube (2:1 series).""" width_mm = 18 # Media size reported by printer
[docs] class HeatShrinkTube23_6mm(HeatShrinkTube): """23.6mm heat shrink tube (2:1 series).""" width_mm = 24 # Media size reported by printer
# ============================================================================= # Heat Shrink Tube 3:1 Series (shrinks to 1/3 original diameter) # =============================================================================
[docs] class HeatShrinkTube3_1_5_2mm(HeatShrinkTube): """5.2mm heat shrink tube (3:1 series).""" width_mm = 5 # Media size reported by printer
[docs] class HeatShrinkTube3_1_9_0mm(HeatShrinkTube): """9.0mm heat shrink tube (3:1 series).""" width_mm = 9 # Media size reported by printer
[docs] class HeatShrinkTube3_1_11_2mm(HeatShrinkTube): """11.2mm heat shrink tube (3:1 series).""" width_mm = 11 # Media size reported by printer
[docs] class HeatShrinkTube3_1_21_0mm(HeatShrinkTube): """21.0mm heat shrink tube (3:1 series).""" width_mm = 21 # Media size reported by printer
[docs] class HeatShrinkTube3_1_31_0mm(HeatShrinkTube): """31.0mm heat shrink tube (3:1 series).""" width_mm = 31 # Media size reported by printer
# ============================================================================= # Deprecated aliases for backward compatibility # ============================================================================= def _deprecated_alias(new_class: type, old_name: str) -> type: """Create a deprecated alias class that warns on instantiation.""" class DeprecatedTape(new_class): def __init__(self) -> None: warnings.warn( f"{old_name} is deprecated, use {new_class.__name__} instead", DeprecationWarning, stacklevel=2, ) super().__init__() DeprecatedTape.__name__ = old_name DeprecatedTape.__qualname__ = old_name DeprecatedTape.__doc__ = f"Deprecated: Use {new_class.__name__} instead." return DeprecatedTape # Deprecated base class alias
[docs] class LaminatedTape(Tape): """Deprecated: Use Tape instead. .. deprecated:: The LaminatedTape class is deprecated. Use Tape directly. """
[docs] def __init__(self) -> None: warnings.warn( "LaminatedTape is deprecated, use Tape instead", DeprecationWarning, stacklevel=2, ) super().__init__()
# Deprecated tape size aliases LaminatedTape3_5mm = _deprecated_alias(Tape3_5mm, "LaminatedTape3_5mm") LaminatedTape6mm = _deprecated_alias(Tape6mm, "LaminatedTape6mm") LaminatedTape9mm = _deprecated_alias(Tape9mm, "LaminatedTape9mm") LaminatedTape12mm = _deprecated_alias(Tape12mm, "LaminatedTape12mm") LaminatedTape18mm = _deprecated_alias(Tape18mm, "LaminatedTape18mm") LaminatedTape24mm = _deprecated_alias(Tape24mm, "LaminatedTape24mm") LaminatedTape36mm = _deprecated_alias(Tape36mm, "LaminatedTape36mm")