pyAS4
Бібліотека Python для роботи з AS4 (OASIS ebXML AS4) протоколом обміну повідомленнями.
pyAS4 - це дружелюбна обгортка навколо ZEEP та MTOM/XOP транспорту, яка спрощує створення та управління AS4-сумісними повідомленнями для систем електронної доставки та B2B комунікацій.
Опис
pyAS4 надає удосконалений клієнт для роботи з AS4 веб-сервісами, включаючи:
AS4Send - клієнт для відправлення AS4-повідомлень
AS4Receive - клієнт для отримання AS4-повідомлень
Header - конструктор заголовків AS4 для керування метаданими повідомлень
Підтримка MTOM/XOP для передачі великих файлів
Управління party identifiers та service/action деталями
Обробка вхідних та вихідних повідомлень
Вимоги
Python >= 3.12
lxml >= 6.1.1
zeep >= 4.3.3
Встановлення
За допомогою uv:
uv sync --extra dev
Або з вихідного коду:
git clone <repository-url> cd pyAS4 uv sync --extra dev
Використання
Основний приклад
from zeep.plugins import HistoryPlugin
from pymtom_xop import MtomTransport
from pyAS4.AS4Client import AS4Send
from pyAS4.header import Header
# Створіть транспорт та заголовок
transport = MtomTransport()
header = Header(
c1_party_id="party1-id",
c1_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C1",
c2_party_id="party2-id",
c2_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C2",
c3_party_id="party3-id",
c3_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C3",
c4_party_id="party4-id",
c4_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C4",
service_type="urn:oasis:names:tc:ebcore:ebrs:ebms:binding:1.0",
conversationid="my-conversation-id",
)
# Ініціалізуйте клієнт відправлення
client = AS4Send(
wsdl="http://example.com/as4-service?wsdl",
transport=transport,
plugins=[HistoryPlugin()],
header=header,
)
Відправлення повідомлень
# Відправте повідомлення з вказаними корисними навантаженнями
payloads = [
{
"content": b"<xml>payload content</xml>",
"content_type": "application/xml",
}
]
client.send_message(payloads)
Отримання очікуючих повідомлень
from pyAS4.AS4Client import AS4Receive
receiver = AS4Receive(
wsdl="http://example.com/as4-service?wsdl",
transport=transport,
plugins=[HistoryPlugin()],
header=header,
)
# Отримайте очікуючі повідомлення
for message in receiver.receive_message():
print(message)
Робота з заголовками AS4
from pyAS4.header import Header
# Створіть заголовок AS4
header = Header(
c1_party_id="sender-id",
c1_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C1",
c2_party_id="recipient-id",
c2_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C2",
c3_party_id="intermediary-id",
c3_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C3",
c4_party_id="carrier-id",
c4_party_id_type="urn:fdc:peppol.eu:2017:identifiers:C4",
conversationid="unique-conversation-id",
service="http://docs.oasis-open.org/ebxml-msg/as4/200902/service",
service_type="urn:oasis:names:tc:ebcore:ebrs:ebms:binding:1.0",
action="http://docs.oasis-open.org/ebxml-msg/as4/200902/action"
)
Структура проєкту
pyAS4/ ├── pyAS4/ │ ├── __init__.py # Точка входу бібліотеки │ ├── AS4Client.py # AS4Client, AS4Send та AS4Receive │ ├── header.py # Header клас для керування AS4 заголовками │ └── py.typed # Маркер для типізованої бібліотеки ├── README.rst # Цей файл ├── pyproject.toml # Конфігурація проєкту (PEP 517/518) └── uv.lock # Зафіксовані залежності для uv
Архітектура
- AS4Send / AS4Receive
Базові клієнти для відправлення й отримання AS4-повідомлень через WSDL, транспорт і AS4-заголовок.
- Header
Клас для конструювання та керування ebXML AS4 заголовками повідомлень. Генерує коректний XML на основі стандартів OASIS ebXML.
- MtomTransport
Транспорт з підтримкою MTOM/XOP для обробки великих бінарних вкладень.
Стандарти та протоколи
Проєкт реалізує наступні стандарти:
OASIS ebXML AS4 v3.0 - Асинхронна обробка SOAP повідомлень
PEPPOL - Pan-European Public Procurement Online (ідентифікатори сторін)
MTOM/XOP - SOAP з вкладеннями (передача великих файлів)
Автор
Andrey Shapovalov (mt.andrey@gmail.com)
Ліцензія
EUPL v1.2
Поточна версія
9
Внески
Поточна версія розробляється в приватному репозиторії.
Контакти
Для питань та пропозицій звертайтесь до: - Email: mt.andrey@gmail.com
Примітка: Бібліотека розроблена для роботи з системами електронної доставки, що відповідають стандартам OASIS ebXML AS4, та особливо для проєктів, що використовують PEPPOL мережу.
Metadata
Release files for pyAS4 0.1.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyas4-0.1.19.tar.gz | 18.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyas4-0.1.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.9 kB
Release files / pyas4-0.1.19.tar.gz
| Download URL | pyas4-0.1.19.tar.gz |
|---|---|
| Size | 18.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f54230cbc0f43dc473d17b0698d3dd61619d675fe0392e6b5ccc1035ca220849
|
|
BLAKE2b-256 checksum How to use checksums |
8f4b5a07e549c34409498e69354674efe8d5725859bf3687414670cb464899a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / pyas4-0.1.19-py3-none-any.whl
| Download URL | pyas4-0.1.19-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
560c35f6274f77a9ff717c9f66bfc4b43c29dc5bf3a8036aea59f2440fb5ccd7
|
|
BLAKE2b-256 checksum How to use checksums |
bdce744e08575565efce5b6b04772ee70d2e45d57e82d040b85269e84aa5c1ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log