furntype package#

Subpackages#

Submodules#

furntype.constants module#

Tip

Избегайте использования аннотаций типа подписи в функции с помощью autodoc,

установив следующие параметры:

# -- Options for autodoc ----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#configuration

# Automatically extract typehints when specified and place them in
# descriptions of the relevant function/method.
autodoc_typehints = "description"

# Don't show class signature with the class' name.
autodoc_class_signature = "separated"

Классы-константы глобальных “мебельных” типов#

Это именно константы. Переопределять их НЕЛЬЗЯ!

Пример:
>>> from furntype import constants as const

Для передачи значения в функции к3, такие как setpan6par требуется использовать <int>. Это не очень наглядно при передаче значений в коде.

>>> const.MAJORPLACE.SHELF.value
12

Часто приходится решать обратную задачу: получить обозначение по кодовому числу, которое возвращает функция в к3. Например getpan6par. Модуль const легко решает эту задачу.

>>> const.PANELSIDE(5).name
'E'

Что бы узнать все доступные имена надо вызвать свойство _member_names_ >>> const.MAJORPLACE._member_names_ [‘POST’, ‘SHELF’, ‘PUT_ON’, ‘WALL’]

>>> const.MAJORPLACE.POST
<MAJORPLACE.POST: 11>
>>> p = const.MAJORPLACE.POST
>>> p == 11
True
>>> p.value
11

Если попытаться задать неопределенное в типе значение полуим исключение AttributeError

>>> p.value = 1523
Traceback (most recent call last):
  Оболочка Python, prompt 19, строка 1
  Файл "c:\PKM74\Data\PKM\Proto\site-packages\enum\__init__.py", строка 56, из
  __set__    raise AttributeError("can't set attribute")
builtins.AttributeError: can't set attribute
class furntype.constants.BACKWALLTYPE[source]#

Bases: Enum

Типы задних стенок

BUILT_IN = 'Built-in'#
FOR_SINK = 'For-sink'#
INCUT = 'Incut'#
NONE = 'None'#
PUT_ON = 'Put-on'#
STIFF = 'Stiff'#
class furntype.constants.BOTTOMTYPE[source]#

Bases: Enum

Типы дна#

  • BUILT_IN Утопленное

  • PUT_ON Накладное

  • INCUT Врезное

  • NONE Отсутствует

BUILT_IN = 0#
INCUT = 3#
NONE = 2#
PUT_ON = 1#
class furntype.constants.BUTTTYPE[source]#

Bases: Enum

Типы торцевых обработок#

  • NONE - торцевая обработка отсутствует

  • GROOVE - паз;

  • CHAMFER - скос;

  • ROUNDING - скругление;

CHAMFER = 2#
GROOVE = 1#
NONE = 0#
ROUNDING = 3#
class furntype.constants.CARCASSFORM[source]#

Bases: Enum

Тип формы каркаса#

  • RECTANGLE — прямоугольный каркас

  • ANGLE — угловой каркас

ANGLE = 1#
RECTANGLE = 0#
class furntype.constants.CARCASS_ContactSchemes[source]#

Bases: Enum

Тип схемы контактов каркаса.#

  • NONE - Без контактов

  • LEFT — Контакт слева

  • RIGHT — Контакт справа

  • FRONTLEFT — Контакт спереди слева

  • FRONTRIGHT — Контакт спереди справа

FRONTLEFT = 4#
FRONTRIGHT = 8#
LEFT = 1#
NONE = 0#
RIGHT = 2#
class furntype.constants.CARCASS_OrientationAngleFORM[source]#

Bases: Enum

Ориентация каркаса: (для углового каркаса)#

  • RIGHT — правая

  • LEFT — левая

LEFT = 1#
RIGHT = 0#
class furntype.constants.CINEMA[source]#

Bases: Enum

Типы движений и подчиненностей объектов движения#

MASTER = 'Master'#
ME = 'Me'#
MOVE = 'Move'#
ROTATE = 'Rotate'#
SLAVE = 'Slave'#
class furntype.constants.COMPLECTCHILD[source]#

Bases: Enum

Типы частей комплектующего (Complect) соответствуют свойству Accessory

FIRST = 'First'#
FOURTH = 'Fourth'#
LEFT = 'Left'#
NONE = 'None'#
RIGHT = 'Right'#
SECOND = 'Second'#
THIRD = 'Third'#
class furntype.constants.CONFDUCT[source]#

Bases: Enum

Типы конфигураций вырезов под короб#

INSIDE = 'Inside'#
LEFT = 'Left'#
NONE = 'None'#
RIGHT = 'Right'#
THROUGH = 'Through'#
class furntype.constants.CUTLINEFORM[source]#

Bases: Enum

Формы линий врезки, наростов и линий маркировки
  • FREE - Свободная линия

  • CIRCLE - Окружность

  • ARC - Дуга

  • RECTANGLE - Прямоугольник

  • FIGURE - Фигурная линия

ARC = 'Arc'#
CIRCLE = 'Circle'#
FIGURE = 'Figure'#
FREE = 'Free'#
RECTANGLE = 'Rectangle'#
class furntype.constants.CUTLINETYPE[source]#

Bases: Enum

Типы врезок#

  • CUT - Врезка

  • BULGE - Нарост

  • MARK - Линия маркировки

BULGE = 'Bulge'#
CUT = 'Cut'#
MARK = 'Mark'#
class furntype.constants.FILLTYPE[source]#

Bases: Enum

Типы заполнения прямой ниши#

BOX_HORIZ = 'Box_horiz'#
BOX_VERT = 'Box_vert'#
DRYER = 'Dryer'#
SHELVES = 'Shelves'#
SHELVES_REM = 'Shelves_rem'#
TECHNICS = 'Technics'#
class furntype.constants.HANDLEPLACE[source]#

Bases: Enum

Расположение ручки#

BOTTOM = 'Bottom'#
CENTER = 'Center'#
FREE = 'Free'#
TOP = 'Top'#
class furntype.constants.MAJORPLACE[source]#

Bases: IntEnum

Типы положения панели#

Допустимые имена и передаваемое значение:
  • Post : 11 Стойка

  • Shelf : 12 Полка

  • Put-on : 13 Накладная стенка

  • Wall : 14 Стенка

Пример:
>>> const.MAJORPLACE(11).name
'POST'
>>> const.MAJORPLACE.POST
<MAJORPLACE.POST: 11>
>>> const.MAJORPLACE.POST.value
11
>>>
POST = 11#
PUT_ON = 13#
SHELF = 12#
WALL = 14#
class furntype.constants.MAP_SECTION[source]#

Bases: Enum

Секция раскрашивания#

1 - сторона E (Y+); 2 - сторона D (Y-); 3 - сторона C (X+); 4 - сторона B (X-); 5 - пласть A (Z+); 6 - пласть F (Z-); 7 - угол 1; 8 - угол 2; 9 - угол 3; 10 - угол 4; 11 - дополнение 1; 12 - дополнение 2.

MAP_A = 5#
MAP_ANG1 = 7#
MAP_ANG2 = 8#
MAP_ANG3 = 9#
MAP_ANG4 = 10#
MAP_B = 4#
MAP_C = 3#
MAP_D = 2#
MAP_DOPA = 11#
MAP_DOPB = 12#
MAP_E = 1#
MAP_F = 6#
class furntype.constants.OPENSIDE[source]#

Bases: Enum

Стороны открывания дверей#

BOTTOM = 4#
LEFT = 1#
NONE = 0#
RIGHT = 2#
TOP = 3#
class furntype.constants.PANELFORM[source]#

Bases: IntEnum

Типы форм панели#

  • FREE - панель по замкнутому контуру

  • RECTANGLE - прямоугольная панель

  • QUADRANGLE - четырехугольная панель

  • BYCHORD - панель, гнутая по хорде

  • BYTWOLINES - панель, гнутая по двум отрезкам и дуге

BYCHORD = 4#
BYTWOLINES = 5#
FREE = 1#
QUADRANGLE = 3#
RECTANGLE = 2#
class furntype.constants.PANELSIDE[source]#

Bases: Enum

Cтороны прямоугольной мебельной панели#

Допустимые уникальные имена и передаваемое значение:
  • B : 7 - Торец B

  • C : 3 - Торец C

  • D : 1 - Торец D

  • E : 5 - Торец E

  • ANG1 : 8 - Угол 1

  • ANG2 : 2 - Угол 2

  • ANG3 : 4 - Угол 3

  • ANG4 : 6 - Угол 4

  • ALL : -1 - На все

для пропилов
  • FREE = 9 # Свободная привязка

для вырезов
  • THROUGH = 0 # Привязка насквозь

Пример:
>>> from furntype import constants as const
>>> const.PANELSIDE._member_map_
{'B': <PANELSIDE.B: 7>,
 'C': <PANELSIDE.C: 3>,
 'D': <PANELSIDE.D: 1>,
 'E': <PANELSIDE.E: 5>,
 'FREE': <PANELSIDE.FREE: 9>}
>>> const.PANELSIDE.B.value
7
>>> const.PANELSIDE.B
<PANELSIDE.B: 7>
>>> const.PANELSIDE(5).name
'E'
ALL = -1#
ANG1 = 8#
ANG2 = 2#
ANG3 = 4#
ANG4 = 6#
B = 7#
C = 3#
D = 1#
E = 5#
FREE = 9#
THROUGH = 0#
class furntype.constants.PANELSIDE_BUTT[source]#

Bases: Enum

Cтороны прямоугольной мебельной панели для торцевых обработок#

Допустимые уникальные имена и передаваемое значение:
  • B : 7 - Торец B

  • C : 3 - Торец C

  • D : 1 - Торец D

  • E : 5 - Торец E

  • ANG1 : 8 - Угол 1

  • ANG2 : 2 - Угол 2

  • ANG3 : 4 - Угол 3

  • ANG4 : 6 - Угол 4

  • ALL : -1 - На все

Пример:
>>> from furntype import constants as const
>>> const.PANELSIDE_BUTT._member_map_
{'B': <PANELSIDE_BUTT.B: 7>,
 'C': <PANELSIDE_BUTT.C: 3>,
 'D': <PANELSIDE_BUTT.D: 1>,
 'E': <PANELSIDE_BUTT.E: 5>,
>>> const.PANELSIDE_BUTT.B.value
7
>>> const.PANELSIDE_BUTT.B
<PANELSIDE_BUTT.B: 7>
>>> const.PANELSIDE_BUTT(5).name
'E'
ALL = -1#
ANG1 = 8#
ANG2 = 2#
ANG3 = 4#
ANG4 = 6#
B = 7#
C = 3#
D = 1#
E = 5#
class furntype.constants.PANELSIDE_CUT[source]#

Bases: Enum

Cтороны прямоугольной мебельной панели для вырезов#

Допустимые уникальные имена и передаваемое значение:
  • B : 7 - Торец B

  • C : 3 - Торец C

  • D : 1 - Торец D

  • E : 5 - Торец E

  • FREE = 9 # Свободная привязка

для вырезов
  • THROUGH = 0 # Привязка насквозь

Пример:
>>> from furntype import constants as const
>>> const.PANELSIDE_CUT._member_map_
{'B': <PANELSIDE_CUT.B: 7>,
 'C': <PANELSIDE_CUT.C: 3>,
 'D': <PANELSIDE_CUT.D: 1>,
 'E': <PANELSIDE_CUT.E: 5>,
 'FREE': <PANELSIDE_CUT.FREE: 9>}
>>> const.PANELSIDE_CUT.B.value
7
>>> const.PANELSIDE_CUT.B
<PANELSIDE_CUT.B: 7>
>>> const.PANELSIDE_CUT(5).name
'E'
B = 7#
C = 3#
D = 1#
E = 5#
FREE = 9#
class furntype.constants.PANELSIDE_SLOT[source]#

Bases: Enum

Cтороны прямоугольной мебельной панели для пропилов#

Допустимые уникальные имена и передаваемое значение:
  • B : 7 - Торец B

  • C : 3 - Торец C

  • D : 1 - Торец D

  • E : 5 - Торец E

  • FREE = 9 Свободная привязка

для вырезов
  • THROUGH = 0 # Привязка насквозь

Пример:
>>> from furntype import constants as const
>>> const.PANELSIDE_SLOT._member_map_
{'B': <PANELSIDE_SLOT.B: 7>,
 'C': <PANELSIDE_SLOT.C: 3>,
 'D': <PANELSIDE_SLOT.D: 1>,
 'E': <PANELSIDE_SLOT.E: 5>,
 'FREE': <PANELSIDE_SLOT.FREE: 9>}
>>> const.PANELSIDE_SLOT.B.value
7
>>> const.PANELSIDE_SLOT.B
<PANELSIDE_SLOT.B: 7>
>>> const.PANELSIDE_SLOT(5).name
'E'
B = 7#
C = 3#
D = 1#
E = 5#
FREE = 9#
class furntype.constants.SLOTTYPE[source]#

Bases: Enum

Типы пропилов панели#

  • BOUNDED - Ограниченный пропил

  • HALFTHROUGH - Полуограниченный пропил

  • THROUGH - Сквозной пропил

BOUNDED = 'Bounded'#
HALFTHROUGH = 'Halfthrough'#
THROUGH = 'Through'#
class furntype.constants.TEXTURE[source]#

Bases: Enum

Направления текстур#

ALONG_B = 0#
ALONG_D = 90#
IGNORE = -1#

furntype.eventdispather module#

furntype.logger module#

furntype.logger.check_folder(path)[source]#
furntype.logger.create_path_logdir()[source]#
furntype.logger.fixed_disable_existing_loggers()[source]#

Отмените неприятное значение по умолчанию, и теперь существующие и новые регистраторы снова работают.

furntype.logger.get_config()[source]#
furntype.logger.get_disabled(self)[source]#
furntype.logger.get_file_handler()[source]#
furntype.logger.get_logger(name='root')[source]#
furntype.logger.get_stream_handler()[source]#
furntype.logger.logger_setlevel(logger)[source]#
furntype.logger.set_disabled(self, disabled)[source]#

furntype.types_ module#

class furntype.types_.ext_int[source]#

Bases: int

целое число в диапазоне MIN_EXT MAX_EXT

>>> class my_positive(ext_int):
...    MIN_EXT = -2
...    MAX_EXT = 5
...    EXCEPT_MSG = """Экстремальные типы не должны выходить за пределы
            допустимых значений {} {}""".format(MIN_EXT, MAX_EXT)
>>> p = my_positive(3)
>>> print(p)
3
>>> print(p - 10)
-2
EXCEPT_MSG = 'Экстремальные типы не должны выходить за пределы\n            допустимых значений 0 10000'#
MAX_EXT = 10000#
MIN_EXT = 0#
static __new__(cls, value, *args, **kwargs)[source]#
class furntype.types_.extfloat[source]#

Bases: float

класс числа в пределах допустимых значений

>>> ex = extfloat(10)
print(ex)
10.0
>>> class my_ext(extfloat):
...     MIN_EXT = -2
...     MAX_EXT = 5
...
>>> ex = my_ext(3)
>>> ex
extfloat(3.0)
>>> print(ex)
3.0
EXCEPT_MSG = 'Экстремальные типы не должны выходить за пределы\n            допустимых значений -1 10000'#
MAX_EXT = 10000#
MIN_EXT = -1#
static __new__(cls, value, *args, **kwargs)[source]#
class furntype.types_.grad[source]#

Bases: extfloat

вещественное число в пределах -180…180 по смыслу - это значение угла

MAX_EXT = 180#
MIN_EXT = -180#
class furntype.types_.positive[source]#

Bases: float

положительное вещественное число

static __new__(cls, value, *args, **kwargs)[source]#

furntype.validate_meta module#

class furntype.validate_meta.AngleStraight[source]#

Bases: Validated

Число в переделах 90…-90

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.AutoStorage[source]#

Bases: object

__init__()[source]#
class furntype.validate_meta.ButtTypePanel[source]#

Bases: Validated

Тип торцевой обработки

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Digit[source]#

Bases: Validated

Число

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Entity[source]#

Bases: object

Бизнес-сущность с проверенными полями

class furntype.validate_meta.EntityMeta[source]#

Bases: type

Метакласс для Бизнес-сущностей с проверенными полями

__init__(name, bases, attr_dict)[source]#
class furntype.validate_meta.LogicalBool[source]#

Bases: Validated

bool

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.MajorplacePanel[source]#

Bases: Validated

Majorplace Panel

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.MapSectionPanelRectangle[source]#

Bases: Validated

Секции раскрашивания прямоугольной панели

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.NonBlank[source]#

Bases: Validated

строка, содержащая по крайней мере один символ, не являющийся пробелом

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.PanelSideButt[source]#

Bases: Validated

Тип сторон и углов прямоугольной панели для торцевых обработок

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.PanelSideCut[source]#

Bases: Validated

Тип сторон и углов прямоугольной панели для вырезов

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.PanelSideSlot[source]#

Bases: Validated

Тип сторон и углов прямоугольной панели для пропилов

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Positive[source]#

Bases: Validated

положительное число включая 0

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Quantity[source]#

Bases: Validated

число больше нуля

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Shares[source]#

Bases: Validated

Число больше нуля и в переделах от 0 до 1

validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

class furntype.validate_meta.Validated[source]#

Bases: AutoStorage

__init__(doc=None)[source]#
abstract validate(instance, value)[source]#

вернуть проверенное значение или вызвать ValueError

Module contents#