> **Источник:** https://python-all.ru/2.6/library/aepack.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 37.3. `aepack` – Преобразование между переменными Python и контейнерами данных AppleEvent

*Платформы:* Mac

Модуль `aepack` определяет функции для преобразования (упаковки) переменных Python в дескрипторы AppleEvent и обратно (распаковки). В Python дескриптор AppleEvent представляется объектами встроенного типа `AEDesc`, определённого в модуле [`Carbon.AE`](https://python-all.ru/2.6/library/carbon.html#module-Carbon.AE).

> **Примечание**
>
> Этот модуль был удалён в Python 3.x.

Модуль `aepack` определяет следующие функции:

#### `aepack.pack(x[, forcetype])`

Возвращает объект `AEDesc`, содержащий преобразование значения Python x. Если указан *forcetype*, он задаёт тип дескриптора результата. В противном случае используется стандартное отображение типов Python в типы дескрипторов Apple Event, как показано ниже:

| Тип Python | тип дескриптора |
| --- | --- |
| `FSSpec` | typeFSS |
| `FSRef` | typeFSRef |
| `Alias` | typeAlias |
| целое число | typeLong (32-битное целое) |
| float | typeFloat (64-битное число с плавающей запятой) |
| строка | typeText |
| unicode | typeUnicodeText |
| список | typeAEList |
| словарь | typeAERecord |
| экземпляр | *см. ниже* |

Если *x* является экземпляром Python, то эта функция пытается вызвать метод `__aepack__()`. Этот метод должен возвращать объект `AEDesc`.

Если преобразование *x* не определено выше, эта функция возвращает строковое представление значения в Python (функция repr()), закодированное как текстовый дескриптор.

#### `aepack.unpack(x[, formodulename])`

*x* должен быть объектом типа `AEDesc`. Эта функция возвращает представление данных из дескриптора AppleEvent *x* в виде объекта Python. Простые типы данных AppleEvent (целое, текст, число с плавающей запятой) возвращаются в очевидных для Python типах. Списки AppleEvent возвращаются как списки Python, элементы списка рекурсивно распаковываются. Ссылки на объекты (например, `строка 3 из документа 1`) возвращаются как экземпляры [`aetypes.ObjectSpecifier`](https://python-all.ru/2.6/library/aetypes.html#aetypes.ObjectSpecifier), если не указан `formodulename`. Дескрипторы AppleEvent с типом дескриптора typeFSS возвращаются как объекты `FSSpec`. Дескрипторы записей AppleEvent возвращаются как словари Python с четырёхсимвольными строковыми ключами и рекурсивно распакованными элементами.

Необязательный аргумент `formodulename` используется заглушечными пакетами, сгенерированными [`gensuitemodule`](https://python-all.ru/2.6/library/gensuitemodule.html#module-gensuitemodule), и гарантирует, что классы OSA для спецификаторов объектов ищутся в правильном модуле. Это гарантирует, что если, например, Finder возвращает спецификатор объекта для окна, вы получите экземпляр `Finder.Window`, а не общий `aetypes.Window`. Первый знает обо всех свойствах и элементах, которые есть у окна в Finder, тогда как второй ничего такого не знает.

> **См. также**
>
> **Модуль [`Carbon.AE`](https://python-all.ru/2.6/library/carbon.html#module-Carbon.AE)**
>
> Встроенный доступ к процедурам Apple Event Manager.
>
> **Модуль [`aetypes`](https://python-all.ru/2.6/library/aetypes.html#module-aetypes)**
>
> Определения Python для кодов типов дескрипторов Apple Event.
