Skip to main content

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)

Source distribution for pyAS4 0.1.19
File Size Uploaded
pyas4-0.1.19.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyAS4 0.1.19
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.19 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page