kicad-python 0.4.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. {kicad_python-0.4.0 → kicad_python-0.5.0}/PKG-INFO +16 -13
  2. {kicad_python-0.4.0 → kicad_python-0.5.0}/README.md +7 -0
  3. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/board.py +47 -0
  4. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/board_types.py +17 -1
  5. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/kicad.py +11 -1
  6. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/kicad_api_version.py +1 -1
  7. kicad_python-0.5.0/build/lib/kipy/proto/board/board_commands_pb2.py +99 -0
  8. {kicad_python-0.4.0 → kicad_python-0.5.0/build/lib}/kipy/proto/board/board_commands_pb2.pyi +76 -0
  9. kicad_python-0.5.0/build/lib/kipy/proto/board/board_types_pb2.py +150 -0
  10. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/board/board_types_pb2.pyi +8 -3
  11. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/board.py +47 -0
  12. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/board_types.py +17 -1
  13. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/kicad.py +11 -1
  14. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/kicad_api_version.py +1 -1
  15. kicad_python-0.5.0/kipy/proto/board/board_commands_pb2.py +99 -0
  16. {kicad_python-0.4.0/build/lib → kicad_python-0.5.0}/kipy/proto/board/board_commands_pb2.pyi +76 -0
  17. kicad_python-0.5.0/kipy/proto/board/board_types_pb2.py +150 -0
  18. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/board/board_types_pb2.pyi +8 -3
  19. {kicad_python-0.4.0 → kicad_python-0.5.0}/pyproject.toml +29 -17
  20. {kicad_python-0.4.0 → kicad_python-0.5.0}/setup.py +5 -5
  21. kicad_python-0.4.0/build/lib/kipy/proto/board/board_commands_pb2.py +0 -93
  22. kicad_python-0.4.0/build/lib/kipy/proto/board/board_types_pb2.py +0 -150
  23. kicad_python-0.4.0/kipy/proto/board/board_commands_pb2.py +0 -93
  24. kicad_python-0.4.0/kipy/proto/board/board_types_pb2.py +0 -150
  25. {kicad_python-0.4.0 → kicad_python-0.5.0}/LICENSE +0 -0
  26. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/__init__.py +0 -0
  27. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/client.py +0 -0
  28. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/common_types.py +0 -0
  29. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/errors.py +0 -0
  30. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/geometry.py +0 -0
  31. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/project.py +0 -0
  32. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/project_types.py +0 -0
  33. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/__init__.py +0 -0
  34. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/board/__init__.py +0 -0
  35. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/board/board_pb2.py +0 -0
  36. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/board/board_pb2.pyi +0 -0
  37. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/__init__.py +0 -0
  38. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/__init__.py +0 -0
  39. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/base_commands_pb2.py +0 -0
  40. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/base_commands_pb2.pyi +0 -0
  41. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/editor_commands_pb2.py +0 -0
  42. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/editor_commands_pb2.pyi +0 -0
  43. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/project_commands_pb2.py +0 -0
  44. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/commands/project_commands_pb2.pyi +0 -0
  45. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/envelope_pb2.py +0 -0
  46. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/envelope_pb2.pyi +0 -0
  47. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/__init__.py +0 -0
  48. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/base_types_pb2.py +0 -0
  49. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/base_types_pb2.pyi +0 -0
  50. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/enums_pb2.py +0 -0
  51. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/enums_pb2.pyi +0 -0
  52. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/project_settings_pb2.py +0 -0
  53. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/common/types/project_settings_pb2.pyi +0 -0
  54. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/schematic/schematic_commands_pb2.py +0 -0
  55. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/schematic/schematic_commands_pb2.pyi +0 -0
  56. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/schematic/schematic_types_pb2.py +0 -0
  57. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/proto/schematic/schematic_types_pb2.pyi +0 -0
  58. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/util/__init__.py +0 -0
  59. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/util/board_layer.py +0 -0
  60. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/util/proto.py +0 -0
  61. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/util/units.py +0 -0
  62. {kicad_python-0.4.0 → kicad_python-0.5.0}/build/lib/kipy/wrapper.py +0 -0
  63. {kicad_python-0.4.0 → kicad_python-0.5.0}/build.py +0 -0
  64. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/__init__.py +0 -0
  65. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/client.py +0 -0
  66. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/common_types.py +0 -0
  67. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/errors.py +0 -0
  68. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/geometry.py +0 -0
  69. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/project.py +0 -0
  70. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/project_types.py +0 -0
  71. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/__init__.py +0 -0
  72. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/board/__init__.py +0 -0
  73. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/board/board_pb2.py +0 -0
  74. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/board/board_pb2.pyi +0 -0
  75. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/__init__.py +0 -0
  76. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/__init__.py +0 -0
  77. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/base_commands_pb2.py +0 -0
  78. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/base_commands_pb2.pyi +0 -0
  79. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/editor_commands_pb2.py +0 -0
  80. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/editor_commands_pb2.pyi +0 -0
  81. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/project_commands_pb2.py +0 -0
  82. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/commands/project_commands_pb2.pyi +0 -0
  83. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/envelope_pb2.py +0 -0
  84. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/envelope_pb2.pyi +0 -0
  85. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/__init__.py +0 -0
  86. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/base_types_pb2.py +0 -0
  87. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/base_types_pb2.pyi +0 -0
  88. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/enums_pb2.py +0 -0
  89. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/enums_pb2.pyi +0 -0
  90. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/project_settings_pb2.py +0 -0
  91. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/common/types/project_settings_pb2.pyi +0 -0
  92. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/schematic/schematic_commands_pb2.py +0 -0
  93. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/schematic/schematic_commands_pb2.pyi +0 -0
  94. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/schematic/schematic_types_pb2.py +0 -0
  95. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/proto/schematic/schematic_types_pb2.pyi +0 -0
  96. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/py.typed +0 -0
  97. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/util/__init__.py +0 -0
  98. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/util/board_layer.py +0 -0
  99. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/util/proto.py +0 -0
  100. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/util/units.py +0 -0
  101. {kicad_python-0.4.0 → kicad_python-0.5.0}/kipy/wrapper.py +0 -0
@@ -1,26 +1,22 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: kicad-python
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: KiCad API Python Bindings
5
- License: MIT
5
+ License-Expression: MIT
6
+ License-File: LICENSE
6
7
  Author: The KiCad Development Team
7
- Requires-Python: >=3.9,<4.0
8
+ Requires-Python: >=3.9
8
9
  Classifier: Development Status :: 4 - Beta
9
10
  Classifier: Intended Audience :: Developers
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.9
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: Programming Language :: Python :: 3.12
16
- Classifier: Programming Language :: Python :: 3.13
17
11
  Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
18
12
  Classifier: Typing :: Typed
19
- Requires-Dist: protobuf (>=5.29,<6.0)
13
+ Requires-Dist: protobuf (>=5.29,<6)
20
14
  Requires-Dist: pynng (>=0.8.0,<0.9.0)
21
- Requires-Dist: typing-extensions (>=4.13.2) ; python_version < "3.13"
15
+ Requires-Dist: typing_extensions (>=4.13.2) ; python_version < "3.13"
16
+ Project-URL: Documentation, https://docs.kicad.org/kicad-python-main/
22
17
  Project-URL: Homepage, https://kicad.org/
23
18
  Project-URL: Repository, https://gitlab.com/kicad/code/kicad-python
19
+ Project-URL: issues, https://gitlab.com/kicad/code/kicad-python/-/issues
24
20
  Description-Content-Type: text/markdown
25
21
 
26
22
  # KiCad API Python Bindings
@@ -102,6 +98,13 @@ plugins, copy or symlink them into the appropriate plugins path in order for KiC
102
98
 
103
99
  ## Release History
104
100
 
101
+ ### 0.5.0 (October 13, 2025)
102
+
103
+ - Add `Pad.pad_to_die_length` (KiCad 9.0.4)
104
+ - Add `Board.get_enabled_layers`, `Board.set_enabled_layers`, and `Board.get_copper_layer_count` (KiCad 9.0.5)
105
+ - Autodetect default Flatpak socket path (Johannes Maibaum, !32)
106
+ - Add support for `BoardCircle.rotate` (@modbw, !33)
107
+
105
108
  ### 0.4.0 (July 8, 2025)
106
109
 
107
110
  - Fix ability to move and rotate footprints
@@ -77,6 +77,13 @@ plugins, copy or symlink them into the appropriate plugins path in order for KiC
77
77
 
78
78
  ## Release History
79
79
 
80
+ ### 0.5.0 (October 13, 2025)
81
+
82
+ - Add `Pad.pad_to_die_length` (KiCad 9.0.4)
83
+ - Add `Board.get_enabled_layers`, `Board.set_enabled_layers`, and `Board.get_copper_layer_count` (KiCad 9.0.5)
84
+ - Autodetect default Flatpak socket path (Johannes Maibaum, !32)
85
+ - Add support for `BoardCircle.rotate` (@modbw, !33)
86
+
80
87
  ### 0.4.0 (July 8, 2025)
81
88
 
82
89
  - Fix ability to move and rotate footprints
@@ -615,6 +615,53 @@ class Board:
615
615
  self._kicad.send(command, board_commands_pb2.BoardStackupResponse).stackup
616
616
  )
617
617
 
618
+ def get_copper_layer_count(self) -> int:
619
+ """
620
+ :return: The number of copper layers on the current board
621
+
622
+ .. versionadded:: 0.5.0 (with KiCad 9.0.5)
623
+ """
624
+ cmd = board_commands_pb2.GetBoardEnabledLayers()
625
+ cmd.board.CopyFrom(self._doc)
626
+ response = self._kicad.send(cmd, board_commands_pb2.BoardEnabledLayersResponse)
627
+ return response.copper_layer_count
628
+
629
+ def get_enabled_layers(self) -> List[board_types_pb2.BoardLayer.ValueType]:
630
+ """
631
+ Retrieves the list of all enabled layers in the board, including copper and non-copper layers.
632
+
633
+ :return: A list of enabled BoardLayer enums.
634
+
635
+ .. versionadded:: 0.5.0 (with KiCad 9.0.5)
636
+ """
637
+ cmd = board_commands_pb2.GetBoardEnabledLayers()
638
+ cmd.board.CopyFrom(self._doc)
639
+ response = self._kicad.send(cmd, board_commands_pb2.BoardEnabledLayersResponse)
640
+ return list(response.layers)
641
+
642
+ def set_enabled_layers(
643
+ self,
644
+ copper_layer_count: int,
645
+ layers: Sequence[board_types_pb2.BoardLayer.ValueType],
646
+ ) -> List[board_types_pb2.BoardLayer.ValueType]:
647
+ """
648
+ Sets the copper layer count and enabled non-copper layers for the board.
649
+
650
+ WARNING: Any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
651
+
652
+ :param copper_layer_count: The number of copper layers to enable (must be even and >= 2).
653
+ :param layers: The non-copper layers to enable.
654
+ :return: The updated list of enabled BoardLayer enums.
655
+
656
+ .. versionadded:: 0.5.0 (with KiCad 9.0.5)
657
+ """
658
+ cmd = board_commands_pb2.SetBoardEnabledLayers()
659
+ cmd.board.CopyFrom(self._doc)
660
+ cmd.copper_layer_count = copper_layer_count
661
+ cmd.layers.extend(layers)
662
+ response = self._kicad.send(cmd, board_commands_pb2.BoardEnabledLayersResponse)
663
+ return list(response.layers)
664
+
618
665
  def get_graphics_defaults(self) -> Dict[int, BoardLayerGraphicsDefaults]:
619
666
  """Retrieves the default graphics properties for each layer class on the board"""
620
667
  cmd = board_commands_pb2.GetGraphicsDefaults()
@@ -476,7 +476,12 @@ class BoardCircle(BoardShape, Circle):
476
476
  self.radius_point += delta
477
477
 
478
478
  def rotate(self, angle: Angle, center: Vector2):
479
- pass
479
+ """Rotates the circle around the given center point by the given angle
480
+
481
+ .. versionadded:: 0.5.0
482
+ """
483
+ self.center = self.center.rotate(angle, center)
484
+ self.radius_point = self.radius_point.rotate(angle, center)
480
485
 
481
486
  class BoardRectangle(BoardShape, Rectangle):
482
487
  """Represents a graphic rectangle on a board or footprint"""
@@ -1307,6 +1312,17 @@ class Pad(BoardItem):
1307
1312
  def padstack(self) -> PadStack:
1308
1313
  return PadStack(proto_ref=self._proto.pad_stack)
1309
1314
 
1315
+ @property
1316
+ def pad_to_die_length(self) -> int:
1317
+ """
1318
+ .. versionadded:: 0.5.0 (with KiCad 9.0.4)
1319
+ """
1320
+ return self._proto.pad_to_die_length.value_nm
1321
+
1322
+ @pad_to_die_length.setter
1323
+ def pad_to_die_length(self, length: int):
1324
+ self._proto.pad_to_die_length.value_nm = length
1325
+
1310
1326
 
1311
1327
  class Via(BoardItem):
1312
1328
  def __init__(self, proto: Optional[board_types_pb2.Via] = None,
@@ -44,7 +44,17 @@ def _default_socket_path() -> str:
44
44
  path = os.environ.get('KICAD_API_SOCKET')
45
45
  if path is not None:
46
46
  return path
47
- return f'ipc://{gettempdir()}\\kicad\\api.sock' if platform.system() == 'Windows' else 'ipc:///tmp/kicad/api.sock'
47
+ if platform.system() == 'Windows':
48
+ return f'ipc://{gettempdir()}\\kicad\\api.sock'
49
+ else:
50
+ # Check for default socket path of KiCad flatpak on flathub
51
+ home = os.environ.get('HOME')
52
+ if home is not None:
53
+ flatpak_socket_path = f'{home}/.var/app/org.kicad.KiCad/cache/tmp/kicad/api.sock'
54
+ if os.path.exists(flatpak_socket_path):
55
+ return f'ipc://{flatpak_socket_path}'
56
+
57
+ return 'ipc:///tmp/kicad/api.sock'
48
58
 
49
59
  def _random_client_name() -> str:
50
60
  return 'anonymous-'+''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
@@ -1,2 +1,2 @@
1
1
  # This file is automatically generated, do not modify it
2
- KICAD_API_VERSION = "9.0.3-0-g21b6198547"
2
+ KICAD_API_VERSION = "9.0.4-75-gca0207016e"
@@ -0,0 +1,99 @@
1
+ """Generated protocol buffer code."""
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import descriptor_pool as _descriptor_pool
4
+ from google.protobuf import runtime_version as _runtime_version
5
+ from google.protobuf import symbol_database as _symbol_database
6
+ from google.protobuf.internal import builder as _builder
7
+ _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 1, '', 'board/board_commands.proto')
8
+ _sym_db = _symbol_database.Default()
9
+ from ..common.types import base_types_pb2 as common_dot_types_dot_base__types__pb2
10
+ from ..common.types import enums_pb2 as common_dot_types_dot_enums__pb2
11
+ from ..common.types import project_settings_pb2 as common_dot_types_dot_project__settings__pb2
12
+ from ..board import board_pb2 as board_dot_board__pb2
13
+ from ..board import board_types_pb2 as board_dot_board__types__pb2
14
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aboard/board_commands.proto\x12\x14kiapi.board.commands\x1a\x1dcommon/types/base_types.proto\x1a\x18common/types/enums.proto\x1a#common/types/project_settings.proto\x1a\x11board/board.proto\x1a\x17board/board_types.proto"G\n\x0fGetBoardStackup\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier"B\n\x14BoardStackupResponse\x12*\n\x07stackup\x18\x01 \x01(\x0b2\x19.kiapi.board.BoardStackup"v\n\x12UpdateBoardStackup\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12*\n\x07stackup\x18\x02 \x01(\x0b2\x19.kiapi.board.BoardStackup"M\n\x15GetBoardEnabledLayers\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier"g\n\x1aBoardEnabledLayersResponse\x12\x1a\n\x12copper_layer_count\x18\x01 \x01(\r\x12-\n\x06layers\x18\x02 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer"\x98\x01\n\x15SetBoardEnabledLayers\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12\x1a\n\x12copper_layer_count\x18\x02 \x01(\r\x12-\n\x06layers\x18\x03 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer"K\n\x13GetGraphicsDefaults\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier"K\n\x18GraphicsDefaultsResponse\x12/\n\x08defaults\x18\x01 \x01(\x0b2\x1d.kiapi.board.GraphicsDefaults"{\n\x0eGetBoardOrigin\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x123\n\x04type\x18\x02 \x01(\x0e2%.kiapi.board.commands.BoardOriginType"\xa8\x01\n\x0eSetBoardOrigin\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x123\n\x04type\x18\x02 \x01(\x0e2%.kiapi.board.commands.BoardOriginType\x12+\n\x06origin\x18\x03 \x01(\x0b2\x1b.kiapi.common.types.Vector2"X\n\x07GetNets\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12\x17\n\x0fnetclass_filter\x18\x02 \x03(\t"4\n\x0cNetsResponse\x12$\n\x04nets\x18\x01 \x03(\x0b2\x16.kiapi.board.types.Net"\xa2\x01\n\rGetItemsByNet\x12.\n\x06header\x18\x01 \x01(\x0b2\x1e.kiapi.common.types.ItemHeader\x122\n\x05types\x18\x02 \x03(\x0e2#.kiapi.common.types.KiCadObjectType\x12-\n\tnet_codes\x18\x03 \x03(\x0b2\x1a.kiapi.board.types.NetCode"\x8d\x01\n\x12GetItemsByNetClass\x12.\n\x06header\x18\x01 \x01(\x0b2\x1e.kiapi.common.types.ItemHeader\x122\n\x05types\x18\x02 \x03(\x0e2#.kiapi.common.types.KiCadObjectType\x12\x13\n\x0bnet_classes\x18\x03 \x03(\t"9\n\x12GetNetClassForNets\x12#\n\x03net\x18\x01 \x03(\x0b2\x16.kiapi.board.types.Net"\xb6\x01\n\x17NetClassForNetsResponse\x12K\n\x07classes\x18\x01 \x03(\x0b2:.kiapi.board.commands.NetClassForNetsResponse.ClassesEntry\x1aN\n\x0cClassesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b2\x1e.kiapi.common.project.NetClass:\x028\x01"l\n\x0bRefillZones\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12\'\n\x05zones\x18\x02 \x03(\x0b2\x18.kiapi.common.types.KIID"\xa2\x01\n\x14GetPadShapeAsPolygon\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12&\n\x04pads\x18\x02 \x03(\x0b2\x18.kiapi.common.types.KIID\x12,\n\x05layer\x18\x03 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer"{\n\x19PadShapeAsPolygonResponse\x12&\n\x04pads\x18\x01 \x03(\x0b2\x18.kiapi.common.types.KIID\x126\n\x08polygons\x18\x02 \x03(\x0b2$.kiapi.common.types.PolygonWithHoles"\xad\x01\n\x1dCheckPadstackPresenceOnLayers\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12\'\n\x05items\x18\x02 \x03(\x0b2\x18.kiapi.common.types.KIID\x12-\n\x06layers\x18\x03 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer"\xa7\x01\n\x15PadstackPresenceEntry\x12&\n\x04item\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12,\n\x05layer\x18\x02 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x128\n\x08presence\x18\x03 \x01(\x0e2&.kiapi.board.commands.PadstackPresence"X\n\x18PadstackPresenceResponse\x12<\n\x07entries\x18\x01 \x03(\x0b2+.kiapi.board.commands.PadstackPresenceEntry"H\n\x10GetVisibleLayers\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier"B\n\x12BoardLayerResponse\x12,\n\x05layer\x18\x01 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer"<\n\x0bBoardLayers\x12-\n\x06layers\x18\x01 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer"w\n\x10SetVisibleLayers\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12-\n\x06layers\x18\x02 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer"F\n\x0eGetActiveLayer\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier"t\n\x0eSetActiveLayer\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12,\n\x05layer\x18\x02 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer"\xb3\x02\n\x1dBoardEditorAppearanceSettings\x12N\n\x16inactive_layer_display\x18\x01 \x01(\x0e2..kiapi.board.commands.InactiveLayerDisplayMode\x12D\n\x11net_color_display\x18\x02 \x01(\x0e2).kiapi.board.commands.NetColorDisplayMode\x127\n\nboard_flip\x18\x03 \x01(\x0e2#.kiapi.board.commands.BoardFlipMode\x12C\n\x10ratsnest_display\x18\x04 \x01(\x0e2).kiapi.board.commands.RatsnestDisplayMode""\n GetBoardEditorAppearanceSettings"i\n SetBoardEditorAppearanceSettings\x12E\n\x08settings\x18\x01 \x01(\x0b23.kiapi.board.commands.BoardEditorAppearanceSettings"u\n\x14InteractiveMoveItems\x124\n\x05board\x18\x01 \x01(\x0b2%.kiapi.common.types.DocumentSpecifier\x12\'\n\x05items\x18\x02 \x03(\x0b2\x18.kiapi.common.types.KIID*?\n\x0fBoardOriginType\x12\x0f\n\x0bBOT_UNKNOWN\x10\x00\x12\x0c\n\x08BOT_GRID\x10\x01\x12\r\n\tBOT_DRILL\x10\x02*I\n\x10PadstackPresence\x12\x0f\n\x0bPSP_UNKNOWN\x10\x00\x12\x0f\n\x0bPSP_PRESENT\x10\x01\x12\x13\n\x0fPSP_NOT_PRESENT\x10\x02*_\n\x18InactiveLayerDisplayMode\x12\x10\n\x0cILDM_UNKNOWN\x10\x00\x12\x0f\n\x0bILDM_NORMAL\x10\x01\x12\x0f\n\x0bILDM_DIMMED\x10\x02\x12\x0f\n\x0bILDM_HIDDEN\x10\x03*V\n\x13NetColorDisplayMode\x12\x10\n\x0cNCDM_UNKNOWN\x10\x00\x12\x0c\n\x08NCDM_ALL\x10\x01\x12\x11\n\rNCDM_RATSNEST\x10\x02\x12\x0c\n\x08NCDM_OFF\x10\x03*C\n\rBoardFlipMode\x12\x0f\n\x0bBFM_UNKNOWN\x10\x00\x12\x0e\n\nBFM_NORMAL\x10\x01\x12\x11\n\rBFM_FLIPPED_X\x10\x02*R\n\x13RatsnestDisplayMode\x12\x0f\n\x0bRDM_UNKNOWN\x10\x00\x12\x12\n\x0eRDM_ALL_LAYERS\x10\x01\x12\x16\n\x12RDM_VISIBLE_LAYERS\x10\x02b\x06proto3')
15
+ _globals = globals()
16
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
17
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'board.board_commands_pb2', _globals)
18
+ if not _descriptor._USE_C_DESCRIPTORS:
19
+ DESCRIPTOR._loaded_options = None
20
+ _globals['_NETCLASSFORNETSRESPONSE_CLASSESENTRY']._loaded_options = None
21
+ _globals['_NETCLASSFORNETSRESPONSE_CLASSESENTRY']._serialized_options = b'8\x01'
22
+ _globals['_BOARDORIGINTYPE']._serialized_start = 3860
23
+ _globals['_BOARDORIGINTYPE']._serialized_end = 3923
24
+ _globals['_PADSTACKPRESENCE']._serialized_start = 3925
25
+ _globals['_PADSTACKPRESENCE']._serialized_end = 3998
26
+ _globals['_INACTIVELAYERDISPLAYMODE']._serialized_start = 4000
27
+ _globals['_INACTIVELAYERDISPLAYMODE']._serialized_end = 4095
28
+ _globals['_NETCOLORDISPLAYMODE']._serialized_start = 4097
29
+ _globals['_NETCOLORDISPLAYMODE']._serialized_end = 4183
30
+ _globals['_BOARDFLIPMODE']._serialized_start = 4185
31
+ _globals['_BOARDFLIPMODE']._serialized_end = 4252
32
+ _globals['_RATSNESTDISPLAYMODE']._serialized_start = 4254
33
+ _globals['_RATSNESTDISPLAYMODE']._serialized_end = 4336
34
+ _globals['_GETBOARDSTACKUP']._serialized_start = 190
35
+ _globals['_GETBOARDSTACKUP']._serialized_end = 261
36
+ _globals['_BOARDSTACKUPRESPONSE']._serialized_start = 263
37
+ _globals['_BOARDSTACKUPRESPONSE']._serialized_end = 329
38
+ _globals['_UPDATEBOARDSTACKUP']._serialized_start = 331
39
+ _globals['_UPDATEBOARDSTACKUP']._serialized_end = 449
40
+ _globals['_GETBOARDENABLEDLAYERS']._serialized_start = 451
41
+ _globals['_GETBOARDENABLEDLAYERS']._serialized_end = 528
42
+ _globals['_BOARDENABLEDLAYERSRESPONSE']._serialized_start = 530
43
+ _globals['_BOARDENABLEDLAYERSRESPONSE']._serialized_end = 633
44
+ _globals['_SETBOARDENABLEDLAYERS']._serialized_start = 636
45
+ _globals['_SETBOARDENABLEDLAYERS']._serialized_end = 788
46
+ _globals['_GETGRAPHICSDEFAULTS']._serialized_start = 790
47
+ _globals['_GETGRAPHICSDEFAULTS']._serialized_end = 865
48
+ _globals['_GRAPHICSDEFAULTSRESPONSE']._serialized_start = 867
49
+ _globals['_GRAPHICSDEFAULTSRESPONSE']._serialized_end = 942
50
+ _globals['_GETBOARDORIGIN']._serialized_start = 944
51
+ _globals['_GETBOARDORIGIN']._serialized_end = 1067
52
+ _globals['_SETBOARDORIGIN']._serialized_start = 1070
53
+ _globals['_SETBOARDORIGIN']._serialized_end = 1238
54
+ _globals['_GETNETS']._serialized_start = 1240
55
+ _globals['_GETNETS']._serialized_end = 1328
56
+ _globals['_NETSRESPONSE']._serialized_start = 1330
57
+ _globals['_NETSRESPONSE']._serialized_end = 1382
58
+ _globals['_GETITEMSBYNET']._serialized_start = 1385
59
+ _globals['_GETITEMSBYNET']._serialized_end = 1547
60
+ _globals['_GETITEMSBYNETCLASS']._serialized_start = 1550
61
+ _globals['_GETITEMSBYNETCLASS']._serialized_end = 1691
62
+ _globals['_GETNETCLASSFORNETS']._serialized_start = 1693
63
+ _globals['_GETNETCLASSFORNETS']._serialized_end = 1750
64
+ _globals['_NETCLASSFORNETSRESPONSE']._serialized_start = 1753
65
+ _globals['_NETCLASSFORNETSRESPONSE']._serialized_end = 1935
66
+ _globals['_NETCLASSFORNETSRESPONSE_CLASSESENTRY']._serialized_start = 1857
67
+ _globals['_NETCLASSFORNETSRESPONSE_CLASSESENTRY']._serialized_end = 1935
68
+ _globals['_REFILLZONES']._serialized_start = 1937
69
+ _globals['_REFILLZONES']._serialized_end = 2045
70
+ _globals['_GETPADSHAPEASPOLYGON']._serialized_start = 2048
71
+ _globals['_GETPADSHAPEASPOLYGON']._serialized_end = 2210
72
+ _globals['_PADSHAPEASPOLYGONRESPONSE']._serialized_start = 2212
73
+ _globals['_PADSHAPEASPOLYGONRESPONSE']._serialized_end = 2335
74
+ _globals['_CHECKPADSTACKPRESENCEONLAYERS']._serialized_start = 2338
75
+ _globals['_CHECKPADSTACKPRESENCEONLAYERS']._serialized_end = 2511
76
+ _globals['_PADSTACKPRESENCEENTRY']._serialized_start = 2514
77
+ _globals['_PADSTACKPRESENCEENTRY']._serialized_end = 2681
78
+ _globals['_PADSTACKPRESENCERESPONSE']._serialized_start = 2683
79
+ _globals['_PADSTACKPRESENCERESPONSE']._serialized_end = 2771
80
+ _globals['_GETVISIBLELAYERS']._serialized_start = 2773
81
+ _globals['_GETVISIBLELAYERS']._serialized_end = 2845
82
+ _globals['_BOARDLAYERRESPONSE']._serialized_start = 2847
83
+ _globals['_BOARDLAYERRESPONSE']._serialized_end = 2913
84
+ _globals['_BOARDLAYERS']._serialized_start = 2915
85
+ _globals['_BOARDLAYERS']._serialized_end = 2975
86
+ _globals['_SETVISIBLELAYERS']._serialized_start = 2977
87
+ _globals['_SETVISIBLELAYERS']._serialized_end = 3096
88
+ _globals['_GETACTIVELAYER']._serialized_start = 3098
89
+ _globals['_GETACTIVELAYER']._serialized_end = 3168
90
+ _globals['_SETACTIVELAYER']._serialized_start = 3170
91
+ _globals['_SETACTIVELAYER']._serialized_end = 3286
92
+ _globals['_BOARDEDITORAPPEARANCESETTINGS']._serialized_start = 3289
93
+ _globals['_BOARDEDITORAPPEARANCESETTINGS']._serialized_end = 3596
94
+ _globals['_GETBOARDEDITORAPPEARANCESETTINGS']._serialized_start = 3598
95
+ _globals['_GETBOARDEDITORAPPEARANCESETTINGS']._serialized_end = 3632
96
+ _globals['_SETBOARDEDITORAPPEARANCESETTINGS']._serialized_start = 3634
97
+ _globals['_SETBOARDEDITORAPPEARANCESETTINGS']._serialized_end = 3739
98
+ _globals['_INTERACTIVEMOVEITEMS']._serialized_start = 3741
99
+ _globals['_INTERACTIVEMOVEITEMS']._serialized_end = 3858
@@ -209,6 +209,10 @@ global___BoardStackupResponse = BoardStackupResponse
209
209
 
210
210
  @typing.final
211
211
  class UpdateBoardStackup(google.protobuf.message.Message):
212
+ """Changes the stackup for the given board according to the contents of the message (**not yet implemented**)
213
+ WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
214
+ Returns BoardStackupResponse with the updated stackup, in normalized form
215
+ """
212
216
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
213
217
  BOARD_FIELD_NUMBER: builtins.int
214
218
  STACKUP_FIELD_NUMBER: builtins.int
@@ -231,6 +235,78 @@ class UpdateBoardStackup(google.protobuf.message.Message):
231
235
  ...
232
236
  global___UpdateBoardStackup = UpdateBoardStackup
233
237
 
238
+ @typing.final
239
+ class GetBoardEnabledLayers(google.protobuf.message.Message):
240
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
241
+ BOARD_FIELD_NUMBER: builtins.int
242
+
243
+ @property
244
+ def board(self) -> common.types.base_types_pb2.DocumentSpecifier:
245
+ ...
246
+
247
+ def __init__(self, *, board: common.types.base_types_pb2.DocumentSpecifier | None=...) -> None:
248
+ ...
249
+
250
+ def HasField(self, field_name: typing.Literal['board', b'board']) -> builtins.bool:
251
+ ...
252
+
253
+ def ClearField(self, field_name: typing.Literal['board', b'board']) -> None:
254
+ ...
255
+ global___GetBoardEnabledLayers = GetBoardEnabledLayers
256
+
257
+ @typing.final
258
+ class BoardEnabledLayersResponse(google.protobuf.message.Message):
259
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
260
+ COPPER_LAYER_COUNT_FIELD_NUMBER: builtins.int
261
+ LAYERS_FIELD_NUMBER: builtins.int
262
+ copper_layer_count: builtins.int
263
+ 'The number of copper layers enabled in this board.'
264
+
265
+ @property
266
+ def layers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[board.board_types_pb2.BoardLayer.ValueType]:
267
+ """A list of all layers enabled in this board, including copper layers and ones which cannot be disabled."""
268
+
269
+ def __init__(self, *, copper_layer_count: builtins.int=..., layers: collections.abc.Iterable[board.board_types_pb2.BoardLayer.ValueType] | None=...) -> None:
270
+ ...
271
+
272
+ def ClearField(self, field_name: typing.Literal['copper_layer_count', b'copper_layer_count', 'layers', b'layers']) -> None:
273
+ ...
274
+ global___BoardEnabledLayersResponse = BoardEnabledLayersResponse
275
+
276
+ @typing.final
277
+ class SetBoardEnabledLayers(google.protobuf.message.Message):
278
+ """Changes which layers are enabled in the board stackup
279
+ WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
280
+ Returns BoardEnabledLayersResponse with the updated layer set.
281
+ """
282
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
283
+ BOARD_FIELD_NUMBER: builtins.int
284
+ COPPER_LAYER_COUNT_FIELD_NUMBER: builtins.int
285
+ LAYERS_FIELD_NUMBER: builtins.int
286
+ copper_layer_count: builtins.int
287
+ 'The number of copper layers to enable in the board. Currently, this must be an even number >= 2.'
288
+
289
+ @property
290
+ def board(self) -> common.types.base_types_pb2.DocumentSpecifier:
291
+ ...
292
+
293
+ @property
294
+ def layers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[board.board_types_pb2.BoardLayer.ValueType]:
295
+ """The non-copper layers to enable. Note that any copper layers in this list are ignored; copper layers are enabled
296
+ by setting copper_layer_count. Note that the F/B.Courtyard, Edge.Cuts, and Margin layers cannot be disabled and
297
+ will be present in the board even if they are omitted from this list.
298
+ """
299
+
300
+ def __init__(self, *, board: common.types.base_types_pb2.DocumentSpecifier | None=..., copper_layer_count: builtins.int=..., layers: collections.abc.Iterable[board.board_types_pb2.BoardLayer.ValueType] | None=...) -> None:
301
+ ...
302
+
303
+ def HasField(self, field_name: typing.Literal['board', b'board']) -> builtins.bool:
304
+ ...
305
+
306
+ def ClearField(self, field_name: typing.Literal['board', b'board', 'copper_layer_count', b'copper_layer_count', 'layers', b'layers']) -> None:
307
+ ...
308
+ global___SetBoardEnabledLayers = SetBoardEnabledLayers
309
+
234
310
  @typing.final
235
311
  class GetGraphicsDefaults(google.protobuf.message.Message):
236
312
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -0,0 +1,150 @@
1
+ """Generated protocol buffer code."""
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import descriptor_pool as _descriptor_pool
4
+ from google.protobuf import runtime_version as _runtime_version
5
+ from google.protobuf import symbol_database as _symbol_database
6
+ from google.protobuf.internal import builder as _builder
7
+ _runtime_version.ValidateProtobufRuntimeVersion(_runtime_version.Domain.PUBLIC, 5, 29, 1, '', 'board/board_types.proto')
8
+ _sym_db = _symbol_database.Default()
9
+ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
10
+ from ..common.types import base_types_pb2 as common_dot_types_dot_base__types__pb2
11
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17board/board_types.proto\x12\x11kiapi.board.types\x1a\x19google/protobuf/any.proto\x1a\x1dcommon/types/base_types.proto"\x18\n\x07NetCode\x12\r\n\x05value\x18\x01 \x01(\x05"=\n\x03Net\x12(\n\x04code\x18\x01 \x01(\x0b2\x1a.kiapi.board.types.NetCode\x12\x0c\n\x04name\x18\x02 \x01(\t"\xb4\x02\n\x05Track\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12*\n\x05start\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x03 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12+\n\x05width\x18\x04 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12/\n\x06locked\x18\x05 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x12,\n\x05layer\x18\x06 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12#\n\x03net\x18\x07 \x01(\x0b2\x16.kiapi.board.types.Net"\xdc\x02\n\x03Arc\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12*\n\x05start\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03mid\x18\x03 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x04 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12+\n\x05width\x18\x05 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12/\n\x06locked\x18\x06 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x12,\n\x05layer\x18\x07 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12#\n\x03net\x18\x08 \x01(\x0b2\x16.kiapi.board.types.Net"f\n\x14ChamferedRectCorners\x12\x10\n\x08top_left\x18\x01 \x01(\x08\x12\x11\n\ttop_right\x18\x02 \x01(\x08\x12\x13\n\x0bbottom_left\x18\x03 \x01(\x08\x12\x14\n\x0cbottom_right\x18\x04 \x01(\x08"\x9a\x01\n\x16ZoneConnectionSettings\x12?\n\x0fzone_connection\x18\x01 \x01(\x0e2&.kiapi.board.types.ZoneConnectionStyle\x12?\n\x0ethermal_spokes\x18\x02 \x01(\x0b2\'.kiapi.board.types.ThermalSpokeSettings"O\n\x13SolderMaskOverrides\x128\n\x12solder_mask_margin\x18\x01 \x01(\x0b2\x1c.kiapi.common.types.Distance"\x8f\x01\n\x14SolderPasteOverrides\x129\n\x13solder_paste_margin\x18\x01 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12<\n\x19solder_paste_margin_ratio\x18\x02 \x01(\x0b2\x19.kiapi.common.types.Ratio"\xb4\x04\n\rPadStackLayer\x12,\n\x05layer\x18\x01 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12/\n\x05shape\x18\x02 \x01(\x0e2 .kiapi.board.types.PadStackShape\x12)\n\x04size\x18\x03 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12\x1d\n\x15corner_rounding_ratio\x18\x04 \x01(\x01\x12\x15\n\rchamfer_ratio\x18\x05 \x01(\x01\x12B\n\x11chamfered_corners\x18\x06 \x01(\x0b2\'.kiapi.board.types.ChamferedRectCorners\x12;\n\rcustom_shapes\x18\x07 \x03(\x0b2$.kiapi.board.types.BoardGraphicShape\x12=\n\x13custom_anchor_shape\x18\x08 \x01(\x0e2 .kiapi.board.types.PadStackShape\x12@\n\rzone_settings\x18\t \x01(\x0b2).kiapi.board.types.ZoneConnectionSettings\x124\n\x0ftrapezoid_delta\x18\n \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12+\n\x06offset\x18\x0b \x01(\x0b2\x1b.kiapi.common.types.Vector2"\x9e\x02\n\x12PadStackOuterLayer\x12;\n\x10solder_mask_mode\x18\x01 \x01(\x0e2!.kiapi.board.types.SolderMaskMode\x12=\n\x11solder_paste_mode\x18\x02 \x01(\x0e2".kiapi.board.types.SolderPasteMode\x12D\n\x14solder_mask_settings\x18\x03 \x01(\x0b2&.kiapi.board.types.SolderMaskOverrides\x12F\n\x15solder_paste_settings\x18\x04 \x01(\x0b2\'.kiapi.board.types.SolderPasteOverrides"\xd4\x01\n\x0fDrillProperties\x122\n\x0bstart_layer\x18\x01 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x120\n\tend_layer\x18\x02 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12-\n\x08diameter\x18\x03 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12,\n\x05shape\x18\x04 \x01(\x0e2\x1d.kiapi.board.types.DrillShape"\x94\x04\n\x08PadStack\x12-\n\x04type\x18\x01 \x01(\x0e2\x1f.kiapi.board.types.PadStackType\x12-\n\x06layers\x18\x02 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer\x121\n\x05drill\x18\x03 \x01(\x0b2".kiapi.board.types.DrillProperties\x12M\n\x19unconnected_layer_removal\x18\x04 \x01(\x0e2*.kiapi.board.types.UnconnectedLayerRemoval\x127\n\rcopper_layers\x18\x05 \x03(\x0b2 .kiapi.board.types.PadStackLayer\x12(\n\x05angle\x18\x06 \x01(\x0b2\x19.kiapi.common.types.Angle\x12A\n\x12front_outer_layers\x18\x07 \x01(\x0b2%.kiapi.board.types.PadStackOuterLayer\x12@\n\x11back_outer_layers\x18\x08 \x01(\x0b2%.kiapi.board.types.PadStackOuterLayer\x12@\n\rzone_settings\x18\t \x01(\x0b2).kiapi.board.types.ZoneConnectionSettings"\x8a\x02\n\x03Via\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12-\n\x08position\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12.\n\tpad_stack\x18\x03 \x01(\x0b2\x1b.kiapi.board.types.PadStack\x12/\n\x06locked\x18\x04 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x12#\n\x03net\x18\x05 \x01(\x0b2\x16.kiapi.board.types.Net\x12(\n\x04type\x18\x06 \x01(\x0e2\x1a.kiapi.board.types.ViaType"\xee\x01\n\x11BoardGraphicShape\x12/\n\x05shape\x18\x01 \x01(\x0b2 .kiapi.common.types.GraphicShape\x12,\n\x05layer\x18\x02 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12#\n\x03net\x18\x03 \x01(\x0b2\x16.kiapi.board.types.Net\x12$\n\x02id\x18\x04 \x01(\x0b2\x18.kiapi.common.types.KIID\x12/\n\x06locked\x18\x05 \x01(\x0e2\x1f.kiapi.common.types.LockedState"\xca\x01\n\tBoardText\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12&\n\x04text\x18\x02 \x01(\x0b2\x18.kiapi.common.types.Text\x12,\n\x05layer\x18\x03 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12\x10\n\x08knockout\x18\x04 \x01(\x08\x12/\n\x06locked\x18\x05 \x01(\x0e2\x1f.kiapi.common.types.LockedState"\xc1\x01\n\x0cBoardTextBox\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12,\n\x07textbox\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.TextBox\x12,\n\x05layer\x18\x03 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12/\n\x06locked\x18\x04 \x01(\x0e2\x1f.kiapi.common.types.LockedState"\x98\x01\n\x14ThermalSpokeSettings\x12+\n\x05width\x18\x01 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12(\n\x05angle\x18\x02 \x01(\x0b2\x19.kiapi.common.types.Angle\x12)\n\x03gap\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance"\x94\x03\n\x03Pad\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12/\n\x06locked\x18\x02 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x12\x0e\n\x06number\x18\x03 \x01(\t\x12#\n\x03net\x18\x04 \x01(\x0b2\x16.kiapi.board.types.Net\x12(\n\x04type\x18\x05 \x01(\x0e2\x1a.kiapi.board.types.PadType\x12.\n\tpad_stack\x18\x06 \x01(\x0b2\x1b.kiapi.board.types.PadStack\x12-\n\x08position\x18\x07 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12?\n\x19copper_clearance_override\x18\x08 \x01(\x0b2\x1c.kiapi.common.types.Distance\x127\n\x11pad_to_die_length\x18\t \x01(\x0b2\x1c.kiapi.common.types.Distance"\xa2\x02\n\x11HatchFillSettings\x12/\n\tthickness\x18\x01 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12)\n\x03gap\x18\x02 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12.\n\x0borientation\x18\x03 \x01(\x0b2\x19.kiapi.common.types.Angle\x12\x1d\n\x15hatch_smoothing_ratio\x18\x04 \x01(\x01\x12!\n\x19hatch_hole_min_area_ratio\x18\x05 \x01(\x01\x12?\n\x0bborder_mode\x18\x06 \x01(\x0e2*.kiapi.board.types.ZoneHatchFillBorderMode"A\n\x10TeardropSettings\x12-\n\x04type\x18\x01 \x01(\x0e2\x1f.kiapi.board.types.TeardropType"\xdb\x03\n\x12CopperZoneSettings\x12=\n\nconnection\x18\x01 \x01(\x0b2).kiapi.board.types.ZoneConnectionSettings\x12/\n\tclearance\x18\x02 \x01(\x0b2\x1c.kiapi.common.types.Distance\x123\n\rmin_thickness\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance\x129\n\x0bisland_mode\x18\x04 \x01(\x0e2$.kiapi.board.types.IslandRemovalMode\x12\x17\n\x0fmin_island_area\x18\x05 \x01(\x04\x122\n\tfill_mode\x18\x06 \x01(\x0e2\x1f.kiapi.board.types.ZoneFillMode\x12<\n\x0ehatch_settings\x18\x07 \x01(\x0b2$.kiapi.board.types.HatchFillSettings\x12#\n\x03net\x18\x08 \x01(\x0b2\x16.kiapi.board.types.Net\x125\n\x08teardrop\x18\t \x01(\x0b2#.kiapi.board.types.TeardropSettings"\x8a\x02\n\x10RuleAreaSettings\x12\x16\n\x0ekeepout_copper\x18\x01 \x01(\x08\x12\x14\n\x0ckeepout_vias\x18\x02 \x01(\x08\x12\x16\n\x0ekeepout_tracks\x18\x03 \x01(\x08\x12\x14\n\x0ckeepout_pads\x18\x04 \x01(\x08\x12\x1a\n\x12keepout_footprints\x18\x05 \x01(\x08\x12\x19\n\x11placement_enabled\x18\x06 \x01(\x08\x12I\n\x15placement_source_type\x18\x07 \x01(\x0e2*.kiapi.board.types.PlacementRuleSourceType\x12\x18\n\x10placement_source\x18\x08 \x01(\t"t\n\x12ZoneBorderSettings\x121\n\x05style\x18\x01 \x01(\x0e2".kiapi.board.types.ZoneBorderStyle\x12+\n\x05pitch\x18\x02 \x01(\x0b2\x1c.kiapi.common.types.Distance"o\n\x12ZoneFilledPolygons\x12,\n\x05layer\x18\x01 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12+\n\x06shapes\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.PolySet"\x9d\x04\n\x04Zone\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12)\n\x04type\x18\x02 \x01(\x0e2\x1b.kiapi.board.types.ZoneType\x12-\n\x06layers\x18\x03 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer\x12,\n\x07outline\x18\x04 \x01(\x0b2\x1b.kiapi.common.types.PolySet\x12\x0c\n\x04name\x18\x05 \x01(\t\x12@\n\x0fcopper_settings\x18\x06 \x01(\x0b2%.kiapi.board.types.CopperZoneSettingsH\x00\x12A\n\x12rule_area_settings\x18\x07 \x01(\x0b2#.kiapi.board.types.RuleAreaSettingsH\x00\x12\x10\n\x08priority\x18\x08 \x01(\r\x12\x0e\n\x06filled\x18\t \x01(\x08\x12>\n\x0ffilled_polygons\x18\n \x03(\x0b2%.kiapi.board.types.ZoneFilledPolygons\x125\n\x06border\x18\x0b \x01(\x0b2%.kiapi.board.types.ZoneBorderSettings\x12/\n\x06locked\x18\x0c \x01(\x0e2\x1f.kiapi.common.types.LockedStateB\n\n\x08settings"\xd8\x01\n\x1aAlignedDimensionAttributes\x12*\n\x05start\x18\x01 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12,\n\x06height\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance\x126\n\x10extension_height\x18\x04 \x01(\x0b2\x1c.kiapi.common.types.Distance"\x91\x02\n\x1dOrthogonalDimensionAttributes\x12*\n\x05start\x18\x01 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12,\n\x06height\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance\x126\n\x10extension_height\x18\x04 \x01(\x0b2\x1c.kiapi.common.types.Distance\x124\n\talignment\x18\x05 \x01(\x0e2!.kiapi.common.types.AxisAlignment"\xb0\x01\n\x19RadialDimensionAttributes\x12+\n\x06center\x18\x01 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x121\n\x0cradius_point\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x123\n\rleader_length\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance"\xb4\x01\n\x19LeaderDimensionAttributes\x12*\n\x05start\x18\x01 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12A\n\x0cborder_style\x18\x03 \x01(\x0e2+.kiapi.board.types.DimensionTextBorderStyle"r\n\x19CenterDimensionAttributes\x12+\n\x06center\x18\x01 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12(\n\x03end\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2"\xf7\x08\n\tDimension\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12/\n\x06locked\x18\x02 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x12,\n\x05layer\x18\x03 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12&\n\x04text\x18\x04 \x01(\x0b2\x18.kiapi.common.types.Text\x12@\n\x07aligned\x18\x05 \x01(\x0b2-.kiapi.board.types.AlignedDimensionAttributesH\x00\x12F\n\northogonal\x18\x06 \x01(\x0b20.kiapi.board.types.OrthogonalDimensionAttributesH\x00\x12>\n\x06radial\x18\x07 \x01(\x0b2,.kiapi.board.types.RadialDimensionAttributesH\x00\x12>\n\x06leader\x18\x08 \x01(\x0b2,.kiapi.board.types.LeaderDimensionAttributesH\x00\x12>\n\x06center\x18\t \x01(\x0b2,.kiapi.board.types.CenterDimensionAttributesH\x00\x12\x1d\n\x15override_text_enabled\x18\n \x01(\x08\x12\x15\n\roverride_text\x18\x0b \x01(\t\x12\x0e\n\x06prefix\x18\x0c \x01(\t\x12\x0e\n\x06suffix\x18\r \x01(\t\x12.\n\x04unit\x18\x0e \x01(\x0e2 .kiapi.board.types.DimensionUnit\x12;\n\x0bunit_format\x18\x0f \x01(\x0e2&.kiapi.board.types.DimensionUnitFormat\x12C\n\x0farrow_direction\x18\x10 \x01(\x0e2*.kiapi.board.types.DimensionArrowDirection\x128\n\tprecision\x18\x11 \x01(\x0e2%.kiapi.board.types.DimensionPrecision\x12 \n\x18suppress_trailing_zeroes\x18\x12 \x01(\x08\x124\n\x0eline_thickness\x18\x13 \x01(\x0b2\x1c.kiapi.common.types.Distance\x122\n\x0carrow_length\x18\x14 \x01(\x0b2\x1c.kiapi.common.types.Distance\x126\n\x10extension_offset\x18\x15 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12?\n\rtext_position\x18\x16 \x01(\x0e2(.kiapi.board.types.DimensionTextPosition\x12\x19\n\x11keep_text_aligned\x18\x17 \x01(\x08B\x11\n\x0fdimension_style"\x10\n\x0eReferenceImage"\x07\n\x05Group"\x15\n\x07FieldId\x12\n\n\x02id\x18\x01 \x01(\x05"z\n\x05Field\x12&\n\x02id\x18\x01 \x01(\x0b2\x1a.kiapi.board.types.FieldId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12*\n\x04text\x18\x03 \x01(\x0b2\x1c.kiapi.board.types.BoardText\x12\x0f\n\x07visible\x18\x04 \x01(\x08"\xaa\x02\n\x13FootprintAttributes\x12\x13\n\x0bdescription\x18\x01 \x01(\t\x12\x10\n\x08keywords\x18\x02 \x01(\t\x12\x18\n\x10not_in_schematic\x18\x03 \x01(\x08\x12#\n\x1bexclude_from_position_files\x18\x04 \x01(\x08\x12&\n\x1eexclude_from_bill_of_materials\x18\x05 \x01(\x08\x12)\n!exempt_from_courtyard_requirement\x18\x06 \x01(\x08\x12\x17\n\x0fdo_not_populate\x18\x07 \x01(\x08\x12A\n\x0emounting_style\x18\x08 \x01(\x0e2).kiapi.board.types.FootprintMountingStyle"&\n\x10NetTieDefinition\x12\x12\n\npad_number\x18\x01 \x03(\t"\x93\x02\n\x1cFootprintDesignRuleOverrides\x12;\n\x0bsolder_mask\x18\x01 \x01(\x0b2&.kiapi.board.types.SolderMaskOverrides\x12=\n\x0csolder_paste\x18\x02 \x01(\x0b2\'.kiapi.board.types.SolderPasteOverrides\x126\n\x10copper_clearance\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Distance\x12?\n\x0fzone_connection\x18\x04 \x01(\x0e2&.kiapi.board.types.ZoneConnectionStyle"\xd1\x01\n\x10Footprint3DModel\x12\x10\n\x08filename\x18\x01 \x01(\t\x12+\n\x05scale\x18\x02 \x01(\x0b2\x1c.kiapi.common.types.Vector3D\x12.\n\x08rotation\x18\x03 \x01(\x0b2\x1c.kiapi.common.types.Vector3D\x12,\n\x06offset\x18\x04 \x01(\x0b2\x1c.kiapi.common.types.Vector3D\x12\x0f\n\x07visible\x18\x05 \x01(\x08\x12\x0f\n\x07opacity\x18\x06 \x01(\x01"\xc8\x04\n\tFootprint\x121\n\x02id\x18\x01 \x01(\x0b2%.kiapi.common.types.LibraryIdentifier\x12+\n\x06anchor\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12:\n\nattributes\x18\x03 \x01(\x0b2&.kiapi.board.types.FootprintAttributes\x12B\n\toverrides\x18\x04 \x01(\x0b2/.kiapi.board.types.FootprintDesignRuleOverrides\x125\n\x08net_ties\x18\x05 \x03(\x0b2#.kiapi.board.types.NetTieDefinition\x125\n\x0eprivate_layers\x18\x06 \x03(\x0e2\x1d.kiapi.board.types.BoardLayer\x121\n\x0freference_field\x18\x07 \x01(\x0b2\x18.kiapi.board.types.Field\x12-\n\x0bvalue_field\x18\x08 \x01(\x0b2\x18.kiapi.board.types.Field\x121\n\x0fdatasheet_field\x18\t \x01(\x0b2\x18.kiapi.board.types.Field\x123\n\x11description_field\x18\n \x01(\x0b2\x18.kiapi.board.types.Field\x12#\n\x05items\x18\x0b \x03(\x0b2\x14.google.protobuf.Any"\xa7\x05\n\x11FootprintInstance\x12$\n\x02id\x18\x01 \x01(\x0b2\x18.kiapi.common.types.KIID\x12-\n\x08position\x18\x02 \x01(\x0b2\x1b.kiapi.common.types.Vector2\x12.\n\x0borientation\x18\x03 \x01(\x0b2\x19.kiapi.common.types.Angle\x12,\n\x05layer\x18\x04 \x01(\x0e2\x1d.kiapi.board.types.BoardLayer\x12/\n\x06locked\x18\x05 \x01(\x0e2\x1f.kiapi.common.types.LockedState\x120\n\ndefinition\x18\x06 \x01(\x0b2\x1c.kiapi.board.types.Footprint\x121\n\x0freference_field\x18\x07 \x01(\x0b2\x18.kiapi.board.types.Field\x12-\n\x0bvalue_field\x18\x08 \x01(\x0b2\x18.kiapi.board.types.Field\x121\n\x0fdatasheet_field\x18\t \x01(\x0b2\x18.kiapi.board.types.Field\x123\n\x11description_field\x18\n \x01(\x0b2\x18.kiapi.board.types.Field\x12:\n\nattributes\x18\x0b \x01(\x0b2&.kiapi.board.types.FootprintAttributes\x12B\n\toverrides\x18\x0c \x01(\x0b2/.kiapi.board.types.FootprintDesignRuleOverrides\x122\n\x0bsymbol_path\x18\r \x01(\x0b2\x1d.kiapi.common.types.SheetPath*\xab\x0c\n\nBoardLayer\x12\x0e\n\nBL_UNKNOWN\x10\x00\x12\x10\n\x0cBL_UNDEFINED\x10\x01\x12\x11\n\rBL_UNSELECTED\x10\x02\x12\x0b\n\x07BL_F_Cu\x10\x03\x12\r\n\tBL_In1_Cu\x10\x04\x12\r\n\tBL_In2_Cu\x10\x05\x12\r\n\tBL_In3_Cu\x10\x06\x12\r\n\tBL_In4_Cu\x10\x07\x12\r\n\tBL_In5_Cu\x10\x08\x12\r\n\tBL_In6_Cu\x10\t\x12\r\n\tBL_In7_Cu\x10\n\x12\r\n\tBL_In8_Cu\x10\x0b\x12\r\n\tBL_In9_Cu\x10\x0c\x12\x0e\n\nBL_In10_Cu\x10\r\x12\x0e\n\nBL_In11_Cu\x10\x0e\x12\x0e\n\nBL_In12_Cu\x10\x0f\x12\x0e\n\nBL_In13_Cu\x10\x10\x12\x0e\n\nBL_In14_Cu\x10\x11\x12\x0e\n\nBL_In15_Cu\x10\x12\x12\x0e\n\nBL_In16_Cu\x10\x13\x12\x0e\n\nBL_In17_Cu\x10\x14\x12\x0e\n\nBL_In18_Cu\x10\x15\x12\x0e\n\nBL_In19_Cu\x10\x16\x12\x0e\n\nBL_In20_Cu\x10\x17\x12\x0e\n\nBL_In21_Cu\x10\x18\x12\x0e\n\nBL_In22_Cu\x10\x19\x12\x0e\n\nBL_In23_Cu\x10\x1a\x12\x0e\n\nBL_In24_Cu\x10\x1b\x12\x0e\n\nBL_In25_Cu\x10\x1c\x12\x0e\n\nBL_In26_Cu\x10\x1d\x12\x0e\n\nBL_In27_Cu\x10\x1e\x12\x0e\n\nBL_In28_Cu\x10\x1f\x12\x0e\n\nBL_In29_Cu\x10 \x12\x0e\n\nBL_In30_Cu\x10!\x12\x0b\n\x07BL_B_Cu\x10"\x12\x0e\n\nBL_B_Adhes\x10#\x12\x0e\n\nBL_F_Adhes\x10$\x12\x0e\n\nBL_B_Paste\x10%\x12\x0e\n\nBL_F_Paste\x10&\x12\x0e\n\nBL_B_SilkS\x10\'\x12\x0e\n\nBL_F_SilkS\x10(\x12\r\n\tBL_B_Mask\x10)\x12\r\n\tBL_F_Mask\x10*\x12\x10\n\x0cBL_Dwgs_User\x10+\x12\x10\n\x0cBL_Cmts_User\x10,\x12\x10\n\x0cBL_Eco1_User\x10-\x12\x10\n\x0cBL_Eco2_User\x10.\x12\x10\n\x0cBL_Edge_Cuts\x10/\x12\r\n\tBL_Margin\x100\x12\x0e\n\nBL_B_CrtYd\x101\x12\x0e\n\nBL_F_CrtYd\x102\x12\x0c\n\x08BL_B_Fab\x103\x12\x0c\n\x08BL_F_Fab\x104\x12\r\n\tBL_User_1\x105\x12\r\n\tBL_User_2\x106\x12\r\n\tBL_User_3\x107\x12\r\n\tBL_User_4\x108\x12\r\n\tBL_User_5\x109\x12\r\n\tBL_User_6\x10:\x12\r\n\tBL_User_7\x10;\x12\r\n\tBL_User_8\x10<\x12\r\n\tBL_User_9\x10=\x12\r\n\tBL_Rescue\x10>\x12\x0e\n\nBL_User_10\x10?\x12\x0e\n\nBL_User_11\x10@\x12\x0e\n\nBL_User_12\x10A\x12\x0e\n\nBL_User_13\x10B\x12\x0e\n\nBL_User_14\x10C\x12\x0e\n\nBL_User_15\x10D\x12\x0e\n\nBL_User_16\x10E\x12\x0e\n\nBL_User_17\x10F\x12\x0e\n\nBL_User_18\x10G\x12\x0e\n\nBL_User_19\x10H\x12\x0e\n\nBL_User_20\x10I\x12\x0e\n\nBL_User_21\x10J\x12\x0e\n\nBL_User_22\x10K\x12\x0e\n\nBL_User_23\x10L\x12\x0e\n\nBL_User_24\x10M\x12\x0e\n\nBL_User_25\x10N\x12\x0e\n\nBL_User_26\x10O\x12\x0e\n\nBL_User_27\x10P\x12\x0e\n\nBL_User_28\x10Q\x12\x0e\n\nBL_User_29\x10R\x12\x0e\n\nBL_User_30\x10S\x12\x0e\n\nBL_User_31\x10T\x12\x0e\n\nBL_User_32\x10U\x12\x0e\n\nBL_User_33\x10V\x12\x0e\n\nBL_User_34\x10W\x12\x0e\n\nBL_User_35\x10X\x12\x0e\n\nBL_User_36\x10Y\x12\x0e\n\nBL_User_37\x10Z\x12\x0e\n\nBL_User_38\x10[\x12\x0e\n\nBL_User_39\x10\\\x12\x0e\n\nBL_User_40\x10]\x12\x0e\n\nBL_User_41\x10^\x12\x0e\n\nBL_User_42\x10_\x12\x0e\n\nBL_User_43\x10`\x12\x0e\n\nBL_User_44\x10a\x12\x0e\n\nBL_User_45\x10b*Y\n\x0cPadStackType\x12\x0f\n\x0bPST_UNKNOWN\x10\x00\x12\x0e\n\nPST_NORMAL\x10\x01\x12\x18\n\x14PST_FRONT_INNER_BACK\x10\x02\x12\x0e\n\nPST_CUSTOM\x10\x03*m\n\x17UnconnectedLayerRemoval\x12\x0f\n\x0bULR_UNKNOWN\x10\x00\x12\x0c\n\x08ULR_KEEP\x10\x01\x12\x0e\n\nULR_REMOVE\x10\x02\x12#\n\x1fULR_REMOVE_EXCEPT_START_AND_END\x10\x03*\x9e\x01\n\rPadStackShape\x12\x0f\n\x0bPSS_UNKNOWN\x10\x00\x12\x0e\n\nPSS_CIRCLE\x10\x01\x12\x11\n\rPSS_RECTANGLE\x10\x02\x12\x0c\n\x08PSS_OVAL\x10\x03\x12\x11\n\rPSS_TRAPEZOID\x10\x04\x12\x11\n\rPSS_ROUNDRECT\x10\x05\x12\x15\n\x11PSS_CHAMFEREDRECT\x10\x06\x12\x0e\n\nPSS_CUSTOM\x10\x07*{\n\x13ZoneConnectionStyle\x12\x0f\n\x0bZCS_UNKNOWN\x10\x00\x12\x11\n\rZCS_INHERITED\x10\x01\x12\x0c\n\x08ZCS_NONE\x10\x02\x12\x0f\n\x0bZCS_THERMAL\x10\x03\x12\x0c\n\x08ZCS_FULL\x10\x04\x12\x13\n\x0fZCS_PTH_THERMAL\x10\x05*]\n\x0eSolderMaskMode\x12\x0e\n\nSMM_UNKOWN\x10\x00\x12\x0e\n\nSMM_MASKED\x10\x01\x12\x10\n\x0cSMM_UNMASKED\x10\x02\x12\x19\n\x15SMM_FROM_DESIGN_RULES\x10\x03*]\n\x0fSolderPasteMode\x12\x0e\n\nSPM_UNKOWN\x10\x00\x12\r\n\tSPM_PASTE\x10\x01\x12\x10\n\x0cSPM_NO_PASTE\x10\x02\x12\x19\n\x15SPM_FROM_DESIGN_RULES\x10\x03*L\n\nDrillShape\x12\x0e\n\nDS_UNKNOWN\x10\x00\x12\r\n\tDS_CIRCLE\x10\x01\x12\r\n\tDS_OBLONG\x10\x02\x12\x10\n\x0cDS_UNDEFINED\x10\x03*L\n\x07ViaType\x12\x0e\n\nVT_UNKNOWN\x10\x00\x12\x0e\n\nVT_THROUGH\x10\x01\x12\x13\n\x0fVT_BLIND_BURIED\x10\x02\x12\x0c\n\x08VT_MICRO\x10\x03*U\n\x07PadType\x12\x0e\n\nPT_UNKNOWN\x10\x00\x12\n\n\x06PT_PTH\x10\x01\x12\n\n\x06PT_SMD\x10\x02\x12\x15\n\x11PT_EDGE_CONNECTOR\x10\x03\x12\x0b\n\x07PT_NPTH\x10\x04*Y\n\x1eCustomPadShapeZoneFillStrategy\x12\x10\n\x0cCPSZ_UNKNOWN\x10\x00\x12\x10\n\x0cCPSZ_OUTLINE\x10\x01\x12\x13\n\x0fCPSZ_CONVEXHULL\x10\x02*^\n\x08ZoneType\x12\x0e\n\nZT_UNKNOWN\x10\x00\x12\r\n\tZT_COPPER\x10\x01\x12\x10\n\x0cZT_GRAPHICAL\x10\x02\x12\x10\n\x0cZT_RULE_AREA\x10\x03\x12\x0f\n\x0bZT_TEARDROP\x10\x04*f\n\x0cTeardropType\x12\x0f\n\x0bTDT_UNKNOWN\x10\x00\x12\x0c\n\x08TDT_NONE\x10\x01\x12\x13\n\x0fTDT_UNSPECIFIED\x10\x02\x12\x0f\n\x0bTDT_VIA_PAD\x10\x03\x12\x11\n\rTDT_TRACK_END\x10\x04*Q\n\x11IslandRemovalMode\x12\x0f\n\x0bIRM_UNKNOWN\x10\x00\x12\x0e\n\nIRM_ALWAYS\x10\x01\x12\r\n\tIRM_NEVER\x10\x02\x12\x0c\n\x08IRM_AREA\x10\x03*?\n\x0cZoneFillMode\x12\x0f\n\x0bZFM_UNKNOWN\x10\x00\x12\r\n\tZFM_SOLID\x10\x01\x12\x0f\n\x0bZFM_HATCHED\x10\x02*n\n\x12ZoneHatchSmoothing\x12\x0f\n\x0bZHS_UNKNOWN\x10\x00\x12\x0c\n\x08ZHS_NONE\x10\x01\x12\x0e\n\nZHS_FILLET\x10\x02\x12\x13\n\x0fZHS_ARC_LOW_DEF\x10\x03\x12\x14\n\x10ZHS_ARC_HIGH_DEF\x10\x04*m\n\x17ZoneHatchFillBorderMode\x12\x11\n\rZHFBM_UNKNOWN\x10\x00\x12 \n\x1cZHFBM_USE_MIN_ZONE_THICKNESS\x10\x01\x12\x1d\n\x19ZHFBM_USE_HATCH_THICKNESS\x10\x02*Z\n\x17PlacementRuleSourceType\x12\x10\n\x0cPRST_UNKNOWN\x10\x00\x12\x13\n\x0fPRST_SHEET_NAME\x10\x01\x12\x18\n\x14PRST_COMPONENT_CLASS\x10\x02*r\n\x0fZoneBorderStyle\x12\x0f\n\x0bZBS_UNKNOWN\x10\x00\x12\r\n\tZBS_SOLID\x10\x01\x12\x15\n\x11ZBS_DIAGONAL_FULL\x10\x02\x12\x15\n\x11ZBS_DIAGONAL_EDGE\x10\x03\x12\x11\n\rZBS_INVISIBLE\x10\x04*t\n\x18DimensionTextBorderStyle\x12\x10\n\x0cDTBS_UNKNOWN\x10\x00\x12\r\n\tDTBS_NONE\x10\x01\x12\x12\n\x0eDTBS_RECTANGLE\x10\x02\x12\x0f\n\x0bDTBS_CIRCLE\x10\x03\x12\x12\n\x0eDTBS_ROUNDRECT\x10\x04*d\n\x13DimensionUnitFormat\x12\x0f\n\x0bDUF_UNKNOWN\x10\x00\x12\x11\n\rDUF_NO_SUFFIX\x10\x01\x12\x13\n\x0fDUF_BARE_SUFFIX\x10\x02\x12\x14\n\x10DUF_PAREN_SUFFIX\x10\x03*K\n\x17DimensionArrowDirection\x12\x0f\n\x0bDAD_UNKNOWN\x10\x00\x12\x0e\n\nDAD_INWARD\x10\x01\x12\x0f\n\x0bDAD_OUTWARD\x10\x02*\xd4\x01\n\x12DimensionPrecision\x12\x0e\n\nDP_UNKNOWN\x10\x00\x12\x0e\n\nDP_FIXED_0\x10\x01\x12\x0e\n\nDP_FIXED_1\x10\x02\x12\x0e\n\nDP_FIXED_2\x10\x03\x12\x0e\n\nDP_FIXED_3\x10\x04\x12\x0e\n\nDP_FIXED_4\x10\x05\x12\x0e\n\nDP_FIXED_5\x10\x06\x12\x12\n\x0eDP_SCALED_IN_2\x10\x07\x12\x12\n\x0eDP_SCALED_IN_3\x10\x08\x12\x12\n\x0eDP_SCALED_IN_4\x10\t\x12\x12\n\x0eDP_SCALED_IN_5\x10\n*Y\n\x15DimensionTextPosition\x12\x0f\n\x0bDTP_UNKNOWN\x10\x00\x12\x0f\n\x0bDTP_OUTSIDE\x10\x01\x12\x0e\n\nDTP_INLINE\x10\x02\x12\x0e\n\nDTP_MANUAL\x10\x03*a\n\rDimensionUnit\x12\x0e\n\nDU_UNKNOWN\x10\x00\x12\r\n\tDU_INCHES\x10\x01\x12\x0b\n\x07DU_MILS\x10\x02\x12\x12\n\x0eDU_MILLIMETERS\x10\x03\x12\x10\n\x0cDU_AUTOMATIC\x10\x04*a\n\x16FootprintMountingStyle\x12\x0f\n\x0bFMS_UNKNOWN\x10\x00\x12\x14\n\x10FMS_THROUGH_HOLE\x10\x01\x12\x0b\n\x07FMS_SMD\x10\x02\x12\x13\n\x0fFMS_UNSPECIFIED\x10\x03b\x06proto3')
12
+ _globals = globals()
13
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
14
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'board.board_types_pb2', _globals)
15
+ if not _descriptor._USE_C_DESCRIPTORS:
16
+ DESCRIPTOR._loaded_options = None
17
+ _globals['_BOARDLAYER']._serialized_start = 10698
18
+ _globals['_BOARDLAYER']._serialized_end = 12277
19
+ _globals['_PADSTACKTYPE']._serialized_start = 12279
20
+ _globals['_PADSTACKTYPE']._serialized_end = 12368
21
+ _globals['_UNCONNECTEDLAYERREMOVAL']._serialized_start = 12370
22
+ _globals['_UNCONNECTEDLAYERREMOVAL']._serialized_end = 12479
23
+ _globals['_PADSTACKSHAPE']._serialized_start = 12482
24
+ _globals['_PADSTACKSHAPE']._serialized_end = 12640
25
+ _globals['_ZONECONNECTIONSTYLE']._serialized_start = 12642
26
+ _globals['_ZONECONNECTIONSTYLE']._serialized_end = 12765
27
+ _globals['_SOLDERMASKMODE']._serialized_start = 12767
28
+ _globals['_SOLDERMASKMODE']._serialized_end = 12860
29
+ _globals['_SOLDERPASTEMODE']._serialized_start = 12862
30
+ _globals['_SOLDERPASTEMODE']._serialized_end = 12955
31
+ _globals['_DRILLSHAPE']._serialized_start = 12957
32
+ _globals['_DRILLSHAPE']._serialized_end = 13033
33
+ _globals['_VIATYPE']._serialized_start = 13035
34
+ _globals['_VIATYPE']._serialized_end = 13111
35
+ _globals['_PADTYPE']._serialized_start = 13113
36
+ _globals['_PADTYPE']._serialized_end = 13198
37
+ _globals['_CUSTOMPADSHAPEZONEFILLSTRATEGY']._serialized_start = 13200
38
+ _globals['_CUSTOMPADSHAPEZONEFILLSTRATEGY']._serialized_end = 13289
39
+ _globals['_ZONETYPE']._serialized_start = 13291
40
+ _globals['_ZONETYPE']._serialized_end = 13385
41
+ _globals['_TEARDROPTYPE']._serialized_start = 13387
42
+ _globals['_TEARDROPTYPE']._serialized_end = 13489
43
+ _globals['_ISLANDREMOVALMODE']._serialized_start = 13491
44
+ _globals['_ISLANDREMOVALMODE']._serialized_end = 13572
45
+ _globals['_ZONEFILLMODE']._serialized_start = 13574
46
+ _globals['_ZONEFILLMODE']._serialized_end = 13637
47
+ _globals['_ZONEHATCHSMOOTHING']._serialized_start = 13639
48
+ _globals['_ZONEHATCHSMOOTHING']._serialized_end = 13749
49
+ _globals['_ZONEHATCHFILLBORDERMODE']._serialized_start = 13751
50
+ _globals['_ZONEHATCHFILLBORDERMODE']._serialized_end = 13860
51
+ _globals['_PLACEMENTRULESOURCETYPE']._serialized_start = 13862
52
+ _globals['_PLACEMENTRULESOURCETYPE']._serialized_end = 13952
53
+ _globals['_ZONEBORDERSTYLE']._serialized_start = 13954
54
+ _globals['_ZONEBORDERSTYLE']._serialized_end = 14068
55
+ _globals['_DIMENSIONTEXTBORDERSTYLE']._serialized_start = 14070
56
+ _globals['_DIMENSIONTEXTBORDERSTYLE']._serialized_end = 14186
57
+ _globals['_DIMENSIONUNITFORMAT']._serialized_start = 14188
58
+ _globals['_DIMENSIONUNITFORMAT']._serialized_end = 14288
59
+ _globals['_DIMENSIONARROWDIRECTION']._serialized_start = 14290
60
+ _globals['_DIMENSIONARROWDIRECTION']._serialized_end = 14365
61
+ _globals['_DIMENSIONPRECISION']._serialized_start = 14368
62
+ _globals['_DIMENSIONPRECISION']._serialized_end = 14580
63
+ _globals['_DIMENSIONTEXTPOSITION']._serialized_start = 14582
64
+ _globals['_DIMENSIONTEXTPOSITION']._serialized_end = 14671
65
+ _globals['_DIMENSIONUNIT']._serialized_start = 14673
66
+ _globals['_DIMENSIONUNIT']._serialized_end = 14770
67
+ _globals['_FOOTPRINTMOUNTINGSTYLE']._serialized_start = 14772
68
+ _globals['_FOOTPRINTMOUNTINGSTYLE']._serialized_end = 14869
69
+ _globals['_NETCODE']._serialized_start = 104
70
+ _globals['_NETCODE']._serialized_end = 128
71
+ _globals['_NET']._serialized_start = 130
72
+ _globals['_NET']._serialized_end = 191
73
+ _globals['_TRACK']._serialized_start = 194
74
+ _globals['_TRACK']._serialized_end = 502
75
+ _globals['_ARC']._serialized_start = 505
76
+ _globals['_ARC']._serialized_end = 853
77
+ _globals['_CHAMFEREDRECTCORNERS']._serialized_start = 855
78
+ _globals['_CHAMFEREDRECTCORNERS']._serialized_end = 957
79
+ _globals['_ZONECONNECTIONSETTINGS']._serialized_start = 960
80
+ _globals['_ZONECONNECTIONSETTINGS']._serialized_end = 1114
81
+ _globals['_SOLDERMASKOVERRIDES']._serialized_start = 1116
82
+ _globals['_SOLDERMASKOVERRIDES']._serialized_end = 1195
83
+ _globals['_SOLDERPASTEOVERRIDES']._serialized_start = 1198
84
+ _globals['_SOLDERPASTEOVERRIDES']._serialized_end = 1341
85
+ _globals['_PADSTACKLAYER']._serialized_start = 1344
86
+ _globals['_PADSTACKLAYER']._serialized_end = 1908
87
+ _globals['_PADSTACKOUTERLAYER']._serialized_start = 1911
88
+ _globals['_PADSTACKOUTERLAYER']._serialized_end = 2197
89
+ _globals['_DRILLPROPERTIES']._serialized_start = 2200
90
+ _globals['_DRILLPROPERTIES']._serialized_end = 2412
91
+ _globals['_PADSTACK']._serialized_start = 2415
92
+ _globals['_PADSTACK']._serialized_end = 2947
93
+ _globals['_VIA']._serialized_start = 2950
94
+ _globals['_VIA']._serialized_end = 3216
95
+ _globals['_BOARDGRAPHICSHAPE']._serialized_start = 3219
96
+ _globals['_BOARDGRAPHICSHAPE']._serialized_end = 3457
97
+ _globals['_BOARDTEXT']._serialized_start = 3460
98
+ _globals['_BOARDTEXT']._serialized_end = 3662
99
+ _globals['_BOARDTEXTBOX']._serialized_start = 3665
100
+ _globals['_BOARDTEXTBOX']._serialized_end = 3858
101
+ _globals['_THERMALSPOKESETTINGS']._serialized_start = 3861
102
+ _globals['_THERMALSPOKESETTINGS']._serialized_end = 4013
103
+ _globals['_PAD']._serialized_start = 4016
104
+ _globals['_PAD']._serialized_end = 4420
105
+ _globals['_HATCHFILLSETTINGS']._serialized_start = 4423
106
+ _globals['_HATCHFILLSETTINGS']._serialized_end = 4713
107
+ _globals['_TEARDROPSETTINGS']._serialized_start = 4715
108
+ _globals['_TEARDROPSETTINGS']._serialized_end = 4780
109
+ _globals['_COPPERZONESETTINGS']._serialized_start = 4783
110
+ _globals['_COPPERZONESETTINGS']._serialized_end = 5258
111
+ _globals['_RULEAREASETTINGS']._serialized_start = 5261
112
+ _globals['_RULEAREASETTINGS']._serialized_end = 5527
113
+ _globals['_ZONEBORDERSETTINGS']._serialized_start = 5529
114
+ _globals['_ZONEBORDERSETTINGS']._serialized_end = 5645
115
+ _globals['_ZONEFILLEDPOLYGONS']._serialized_start = 5647
116
+ _globals['_ZONEFILLEDPOLYGONS']._serialized_end = 5758
117
+ _globals['_ZONE']._serialized_start = 5761
118
+ _globals['_ZONE']._serialized_end = 6302
119
+ _globals['_ALIGNEDDIMENSIONATTRIBUTES']._serialized_start = 6305
120
+ _globals['_ALIGNEDDIMENSIONATTRIBUTES']._serialized_end = 6521
121
+ _globals['_ORTHOGONALDIMENSIONATTRIBUTES']._serialized_start = 6524
122
+ _globals['_ORTHOGONALDIMENSIONATTRIBUTES']._serialized_end = 6797
123
+ _globals['_RADIALDIMENSIONATTRIBUTES']._serialized_start = 6800
124
+ _globals['_RADIALDIMENSIONATTRIBUTES']._serialized_end = 6976
125
+ _globals['_LEADERDIMENSIONATTRIBUTES']._serialized_start = 6979
126
+ _globals['_LEADERDIMENSIONATTRIBUTES']._serialized_end = 7159
127
+ _globals['_CENTERDIMENSIONATTRIBUTES']._serialized_start = 7161
128
+ _globals['_CENTERDIMENSIONATTRIBUTES']._serialized_end = 7275
129
+ _globals['_DIMENSION']._serialized_start = 7278
130
+ _globals['_DIMENSION']._serialized_end = 8421
131
+ _globals['_REFERENCEIMAGE']._serialized_start = 8423
132
+ _globals['_REFERENCEIMAGE']._serialized_end = 8439
133
+ _globals['_GROUP']._serialized_start = 8441
134
+ _globals['_GROUP']._serialized_end = 8448
135
+ _globals['_FIELDID']._serialized_start = 8450
136
+ _globals['_FIELDID']._serialized_end = 8471
137
+ _globals['_FIELD']._serialized_start = 8473
138
+ _globals['_FIELD']._serialized_end = 8595
139
+ _globals['_FOOTPRINTATTRIBUTES']._serialized_start = 8598
140
+ _globals['_FOOTPRINTATTRIBUTES']._serialized_end = 8896
141
+ _globals['_NETTIEDEFINITION']._serialized_start = 8898
142
+ _globals['_NETTIEDEFINITION']._serialized_end = 8936
143
+ _globals['_FOOTPRINTDESIGNRULEOVERRIDES']._serialized_start = 8939
144
+ _globals['_FOOTPRINTDESIGNRULEOVERRIDES']._serialized_end = 9214
145
+ _globals['_FOOTPRINT3DMODEL']._serialized_start = 9217
146
+ _globals['_FOOTPRINT3DMODEL']._serialized_end = 9426
147
+ _globals['_FOOTPRINT']._serialized_start = 9429
148
+ _globals['_FOOTPRINT']._serialized_end = 10013
149
+ _globals['_FOOTPRINTINSTANCE']._serialized_start = 10016
150
+ _globals['_FOOTPRINTINSTANCE']._serialized_end = 10695
@@ -1359,6 +1359,7 @@ class Pad(google.protobuf.message.Message):
1359
1359
  PAD_STACK_FIELD_NUMBER: builtins.int
1360
1360
  POSITION_FIELD_NUMBER: builtins.int
1361
1361
  COPPER_CLEARANCE_OVERRIDE_FIELD_NUMBER: builtins.int
1362
+ PAD_TO_DIE_LENGTH_FIELD_NUMBER: builtins.int
1362
1363
  locked: common.types.base_types_pb2.LockedState.ValueType
1363
1364
  number: builtins.str
1364
1365
  type: global___PadType.ValueType
@@ -1383,13 +1384,17 @@ class Pad(google.protobuf.message.Message):
1383
1384
  def copper_clearance_override(self) -> common.types.base_types_pb2.Distance:
1384
1385
  """Copper-to-copper clearance override"""
1385
1386
 
1386
- def __init__(self, *, id: common.types.base_types_pb2.KIID | None=..., locked: common.types.base_types_pb2.LockedState.ValueType=..., number: builtins.str=..., net: global___Net | None=..., type: global___PadType.ValueType=..., pad_stack: global___PadStack | None=..., position: common.types.base_types_pb2.Vector2 | None=..., copper_clearance_override: common.types.base_types_pb2.Distance | None=...) -> None:
1387
+ @property
1388
+ def pad_to_die_length(self) -> common.types.base_types_pb2.Distance:
1389
+ """Since: 9.0.4"""
1390
+
1391
+ def __init__(self, *, id: common.types.base_types_pb2.KIID | None=..., locked: common.types.base_types_pb2.LockedState.ValueType=..., number: builtins.str=..., net: global___Net | None=..., type: global___PadType.ValueType=..., pad_stack: global___PadStack | None=..., position: common.types.base_types_pb2.Vector2 | None=..., copper_clearance_override: common.types.base_types_pb2.Distance | None=..., pad_to_die_length: common.types.base_types_pb2.Distance | None=...) -> None:
1387
1392
  ...
1388
1393
 
1389
- def HasField(self, field_name: typing.Literal['copper_clearance_override', b'copper_clearance_override', 'id', b'id', 'net', b'net', 'pad_stack', b'pad_stack', 'position', b'position']) -> builtins.bool:
1394
+ def HasField(self, field_name: typing.Literal['copper_clearance_override', b'copper_clearance_override', 'id', b'id', 'net', b'net', 'pad_stack', b'pad_stack', 'pad_to_die_length', b'pad_to_die_length', 'position', b'position']) -> builtins.bool:
1390
1395
  ...
1391
1396
 
1392
- def ClearField(self, field_name: typing.Literal['copper_clearance_override', b'copper_clearance_override', 'id', b'id', 'locked', b'locked', 'net', b'net', 'number', b'number', 'pad_stack', b'pad_stack', 'position', b'position', 'type', b'type']) -> None:
1397
+ def ClearField(self, field_name: typing.Literal['copper_clearance_override', b'copper_clearance_override', 'id', b'id', 'locked', b'locked', 'net', b'net', 'number', b'number', 'pad_stack', b'pad_stack', 'pad_to_die_length', b'pad_to_die_length', 'position', b'position', 'type', b'type']) -> None:
1393
1398
  ...
1394
1399
  global___Pad = Pad
1395
1400