Skip to content

4.11.0 — 2026-06-18

← 4.10.2 | ↑ 4.x series

Added

Adapters - MinIO

  • Stream Upload and Download - Added put_object_stream and get_object_stream to MinioPort and MinioAdapter for in-memory and binary-stream object I/O without temporary files.
    • put_object_stream accepts bytes | BinaryIO, optional length, and content_type, and clears the list_objects cache after upload.
    • get_object_stream returns the full object body as bytes.

Models - Internet Payment Gateways

  • Parsian and Saman IPG DTOs - Extracted payment gateway request/response models into the domain layer.
    • Added archipy/models/dtos/parsian_ipg_dtos.py with payment, confirm, confirm-with-amount, and reverse DTOs.
    • Added archipy/models/dtos/saman_ipg_dtos.py with payment, verify, and reverse DTOs (including PaymentResponseDTO status validation).

Changed

Adapters - Internet Payment Gateways

  • DTO Import Refactor - Parsian and Saman Shaparak ports, adapters, and package __init__ modules now import DTOs from archipy.models.dtos instead of defining them inline in ports.py.

Chore - Tooling

  • Ruff Source Paths - Removed unused [tool.pytest.ini_options] from pyproject.toml, narrowed Ruff src to archipy and features, and updated per-file ignores for the base/sqlalchemy adapter path.
  • CI Lint Scope - Ruff check and format workflows now include features/steps and scripts alongside archipy.

Tests

Tests - MinIO Adapter

  • Stream Upload Scenarios - Extended features/minio_adapter.feature with outline scenarios for bytes and BinaryIO uploads followed by streaming download verification.
  • Flexible Upload Steps - Refactored MinIO step definitions to support stream-based uploads via put_object_stream.

Tests - FastAPI MinIO Upload

  • Large File End-to-End Uploads - Added features/fastapi_minio_upload.feature and step implementations covering 50 MB, 75 MB, and 100 MB multipart uploads through a FastAPI endpoint backed by put_object_stream.

Chore

Test Containers

  • Image Pin Updates - Bumped test container images in .env.test.
    • Temporal: temporalio/temporal:1.5.1temporalio/temporal:1.7.2
    • Redis: redis:8.6.3-alpineredis:8.6.4-alpine
    • Keycloak: keycloak/keycloak:26.6.2keycloak/keycloak:26.6.3
    • ScyllaDB: scylladb/scylla:2026.1.2scylladb/scylla:2026.1.5

Dependencies

  • Optional extras - Updated optional adapter and dev dependencies.
    • fakeredis: fakeredis>=2.36.1fakeredis>=2.36.2
    • fastapi: fastapi[all]>=0.137.0fastapi[all]>=0.137.2
    • minio: boto3>=1.43.29boto3>=1.43.32
    • scylladb: scylla-driver>=3.29.10scylla-driver>=3.29.11
    • sentry: sentry-sdk>=2.62.0sentry-sdk>=2.63.0
    • sqlalchemy / sqlalchemy-async: sqlalchemy>=2.0.50sqlalchemy>=2.0.51
  • Dev group - Updated development tooling pins.
    • boto3-stubs: boto3-stubs>=1.43.14boto3-stubs>=1.43.32
    • ruff: ruff>=0.15.14ruff>=0.15.17
    • ty: ty>=0.0.39ty>=0.0.50
    • types-grpcio: types-grpcio>=1.0.0.20260518types-grpcio>=1.0.0.20260614
    • mkdocstrings-python: mkdocstrings-python>=2.0.3mkdocstrings-python>=2.0.4