Releases: SyntaxArc/ArchiPy
Releases · SyntaxArc/ArchiPy
4.7.0
Added
Adapters - MinIO
- MinIO Copy Object - Implemented
copy_objectmethod in MinioAdapter.- Supports copying objects within and between buckets
- Added comprehensive BDD tests
Configuration
- Advanced CORS Configuration - Added advanced CORS configuration options.
- Extended
ConfigTemplatewith CORS-related settings - Added comprehensive BDD tests for CORS functionality
- Extended
Changed
Environment
- Example Environment - Updated
.env.examplewith new CORS configuration variables.- Added CORS-related environment variable documentation
Tests - App Utils
- Enhanced App Utils Tests - Added extensive BDD tests for advanced CORS configuration.
- 89 new scenario steps added
Full Changelog: 4.6.0...4.7.0
4.6.0
Added
Adapters - Payment Gateways
-
Parsian IPG Async Adapter - Added new async payment gateway adapter for Parsian integration.
- New
parsian-ipg-asyncoptional extra - SOCKS5 proxy support
- New
-
Saman IPG Async Adapter - Refactored Saman IPG adapter to use async
httpx.- Switched from synchronous
requeststo asynchttpx
- Switched from synchronous
Adapters - Ports
- Port Interface Extraction - Extracted payment gateway port interfaces and moved DTOs to ports.
- Moved DTOs to
ports.pyfor cleaner abstraction
- Moved DTOs to
Documentation - Payment Gateways
- IPG Adapters Documentation - Added async documentation for Saman and Parsian adapters.
Changed
Dependencies - Project
-
Saman IPG Extra - Switched Saman IPG extra from
requeststohttpx.saman-ipg = ["httpx[socks]>=0.28.1"]
-
Parsian IPG Extra - Added new async extra for Parsian IPG.
parsian-ipg-async = ["zeep[async]>=4.3.2", "httpx[socks]>=0.28.1"]
Tests - Containers
- Dynamic Kafka Test Container - Upgraded Kafka test container with dynamic port allocation.
- Upgraded to
apache/kafka:4.2.0
- Upgraded to
Fixed
Tests - Datetime Utils
- Datetime Utils Test Alignment - Fixed tests to match rolled-back implementation.
Full Changelog: 4.5.0...4.6.0
4.5.0
Added
Adapters - Payment Gateways
- Saman Shaparak Adapter - Added new payment gateway adapter for Saman integration.
- New
saman-ipgoptional extra - Added
SAMAN_SHAPARAK__*environment variables
- New
Helpers - Utils
- DatetimeUtils Caching Refactor - Refactored Iran holiday caching to use ClassVar.
- Removed
@ttl_cache_decoratordependency for holiday lookups - Added class-level cache with manual TTL handling
- Removed
Changed
Adapters - Kafka
- Async Method Cleanup - Removed noqa comments from async Kafka adapter methods.
- Removed
ASYNC109noqa fromflush(),list_topics(),batch_consume(),poll()
- Removed
Documentation - Payment Gateways
- Tutorial Unification - Unified payment gateway tutorials across all adapters.
Chore
Dependencies - Project
- Dependency Updates - Updated multiple package constraints.
cache:cachetools>=7.0.5→>=7.0.6fastapi:>=0.135.3→>=0.136.1minio:boto3>=1.42.89→>=1.42.96ty:>=0.0.30→>=0.0.32pre-commit:>=4.5.1→>=4.6.0ruff:>=0.15.10→>=0.15.12
Tests - Containers
- Container Update - Bumped test container version.
Full Changelog: 4.4.2...4.5.0
4.4.2
Changed
Dependencies - Project
- asyncmy to asyncmy2 Migration - Replaced the
asyncmypackage with the maintainedasyncmy2fork in the
starrocks-asyncoptional extra.- Updated
starrocks-asyncdependency fromasyncmy>=0.2.11toasyncmy2>=0.2.20
- Updated
- Dev Dependency Refresh - Bumped multiple dev and type-stub packages and regenerated
uv.lock.ruffupgraded to>=0.15.10types-cachetools,types-grpcio,types-protobuf,types-pymysql,types-regex,types-requestsall updated
to20260408stub releases
Chore
Tests - Containers
- Test Container Images - Updated test container image versions in
.env.test.- Keycloak:
keycloak/keycloak:26.5.7→keycloak/keycloak:26.6.0 - ScyllaDB:
scylladb/scylla:2025.4.3→scylladb/scylla:2026.1.1
- Keycloak:
4.4.1
Changed
Adapters - Keycloak
- Userinfo Cache Typing - Tightened typing for Keycloak userinfo caching by replacing
type: ignorereturn
annotations with explicitcast()toKeycloakUserType.
Helpers - Decorators
- Atomic Decorator Overloads - Refined
sqlalchemy_atomic_decoratoroverloads to better distinguish sync vs async
call sites.- Uses
Literal[True]/Literal[False]overloads foris_async - Adds explicit
cast()when selecting the async/sync decorator branch
- Uses
Dependencies
Dependencies - Project
- Dependency Refresh - Updated runtime and dev dependencies and regenerated
uv.lock.
Chore
Tests - Containers
- Test Container Images - Refreshed container image settings used by
.env.test.
Full Changelog: 4.4.0...4.4.1
4.4.0
Added
Adapters - Kafka
- Async Kafka Producer Adapter - Introduced
AsyncKafkaProducerAdapterfor non-blocking message production using
confluent-kafka's thread-based async delivery model.- Implements the new
AsyncKafkaProducerPortinterface withasync produce,async flush, andasync close
methods - Lazy-initialises the underlying
confluent-kafkaProduceron first use to avoid blocking the event loop at
construction time - Supports configurable worker threads (
kafka_async_worker_threads) and buffer flush timeout
(kafka_async_buffer_timeout_seconds) viaKafkaConfig
- Implements the new
- Async Kafka Consumer Adapter - Introduced
AsyncKafkaConsumerAdapterfor non-blocking message consumption.- Implements the new
AsyncKafkaConsumerPortinterface withasync consume,async subscribe,async commit,
andasync closemethods - Offloads blocking
confluent-kafkaConsumercalls to a thread pool executor to keep the event loop free
- Implements the new
- Async Kafka Ports - Added
AsyncKafkaProducerPortandAsyncKafkaConsumerPortabstract base classes to
archipy/adapters/kafka/ports.py.- Defines the async contract that all async Kafka adapter implementations must satisfy
- Close Methods on Sync Adapters - Added explicit
close()methods toKafkaConsumerAdapterand
KafkaProducerAdapterfor deterministic resource cleanup.
Configs - Kafka
- Async Kafka Config Fields - Extended
KafkaConfigwith two new settings for the async adapters.kafka_async_worker_threads: int— number of threads in the async executor pool (default4)kafka_async_buffer_timeout_seconds: float— maximum seconds to wait when flushing the producer buffer on close
(default5.0)
Tests - Kafka
- Async BDD Scenarios - Expanded
features/kafka_adapters.featurewith end-to-end scenarios for
AsyncKafkaProducerAdapterandAsyncKafkaConsumerAdapter.- Covers produce, consume, subscribe, commit, flush, and close lifecycle
- Step implementations in
features/steps/kafka_adapter_steps.pyuseawaitthroughout instead of
asyncio.run()
Changed
Tests - BDD
- Async Step Implementations - Refactored all async Behave step functions across multiple feature files to use
awaitinstead ofasyncio.run().- Affected files:
atomic_transaction_steps.py,error_utils_steps.py,grpc_error_handling_steps.py,
metric_interceptor_steps.py - Eliminates nested event-loop errors when steps run inside an already-running loop
- Affected files:
test_helpers.pyCleanup - Removed deprecated utility functions fromfeatures/test_helpers.pythat were
superseded by the async step refactor.
Chore
Docs - Kafka
- Kafka Tutorial Expansion - Substantially expanded
docs/tutorials/adapters/kafka.mdto document all five
adapter classes (KafkaAdminAdapter,KafkaConsumerAdapter,KafkaProducerAdapter,
AsyncKafkaConsumerAdapter,AsyncKafkaProducerAdapter).- Added dedicated sections for async adapters, lazy initialisation behaviour, and usage in non-async contexts
- Improved logging examples for consistency with documentation standards
- Kafka API Reference Update - Updated
docs/api_reference/adapters/kafka.mdto list all five adapter classes
and their async configuration options. - Documentation Admonition Style - Migrated all admonitions across 19 documentation files from MkDocs
!!!
directives to block-quote callouts (> **Type:** ...) to prevent formatting issues in PyCharm. - Quickstart Redis Update - Updated
docs/getting-started/quickstart.mdto reflect the current Redis caching
implementation. - BDD Testing Rule Update - Clarified Behave version (1.3.3) and async step conventions in
.cursor/rules/testing-bdd.mdc.
Full Changelog: 4.3.6...4.4.0
4.3.6
Added
Helpers - Chore
- Documentation Cursor Rule - Added a dedicated Cursor rule for documentation standards under
docs/**/*.md.- Enforces Google-style docstrings,
snake_casefilenames, required page structure, and code example conventions
across all documentation files
- Enforces Google-style docstrings,
Fixed
Chore - CI
- Docs Deploy Trigger on Source Changes - Extended the
deploy-docs.ymlworkflow to also trigger on changes to
archipy/**source files, not onlydocs/**.- Ensures the published documentation is rebuilt whenever adapter or helper code changes
- ReadTheDocs Build Configuration - Repaired the
.readthedocs.yamlconfiguration to restore a functional
ReadTheDocs build.- Simplified configuration to match current ReadTheDocs requirements and removed stale options
Changed
Adapters - SQLAlchemy
- Filter Value Type Union Expansion - Broadened the
valueparameter type union in
SQLAlchemyFilterMixin._apply_filterand_validate_list_operation.- Added
int,Decimal,datetime,date, andEnumto the accepted type union alongside the existing
str | float | bool | list | UUID | None - Allows filtering on numeric, temporal, and enum-typed columns without requiring a cast at the call site
- Added
Chore
Docs - Documentation Overhaul
- API Reference Restructure - Split the monolithic
api_reference.mdinto per-module subdirectories (adapters/,
helpers/) with individual pages for each adapter and helper module. - Adapter Example Pages - Revamped all adapter example pages with complete runnable snippets and standardised
sections (Installation, Configuration, Basic Usage, See Also).- Added Elasticsearch example guide and expanded PostgreSQL and configs examples
- Consolidated payment gateway documentation into a single page
- New Example Pages - Added
dependency_injection.mdanderror_handling.mdexample guides. - Getting Started - Overhauled the quickstart guide and complete user example to reflect
manage.pyintegration;
updated project structure documentation with enhancedruncommand options. - Navigation - Restructured and expanded
mkdocs.ymlnavigation; added404.mdandCODE_OF_CONDUCT.mdpages. - Architecture & Concepts - Updated architecture and concepts documentation; split the large
concepts.mdinto
focused topic pages. - Installation Guide - Created a dedicated installation guide and streamlined the prerequisites section.
- Changelog - Added Cursor rules for changelog standards and restructured changelog organisation and navigation.
Full Changelog: 4.3.5...4.3.6
4.3.5
Fixed
Adapters - Kafka
- SSL Config Typing - Improved type safety and optional-field handling for SSL configuration in all three Kafka
adapters (KafkaAdminAdapter,KafkaConsumerAdapter,KafkaProducerAdapter)- Replaced dict merge (
|=) with explicit per-key assignment to satisfy thedict[str, str | int | float]type
annotation - Optional SSL fields (
SASL_MECHANISM,SSL_CERT_FILE,SSL_KEY_FILE) now fall back to""whenNone,
preventing type errors - Config dicts are now explicitly typed as
dict[str, str | int | float]across all three adapters
- Replaced dict merge (
Helpers - Utils
- gRPC Interceptors Type Annotation - Added explicit
list[grpc.ServerInterceptor]type annotation to the
interceptors list inAppUtils.create_async_grpc_app
Changed
Adapters - Testing
- ScyllaDB Test Container - Lowered minimum
aio-max-nrrequirement from131072to65536- Reduces the kernel parameter requirement for running ScyllaDB in CI and local environments
- Reflects the actual minimum needed by the Seastar framework in containerised setups
Tests - Redis
- Unified Redis BDD Tests - Consolidated Redis mock and container tests into a single feature file
- Renamed
redis_mock.feature→redis_adapter.featureandredis_mock_steps.py→redis_adapter_steps.py - Single feature now covers both mock (fakeredis) and real container scenarios
- Renamed
Dependencies
- cachetools bumped from
>=7.0.1to>=7.0.5(affectscache,keycloak,minio,scylladbextras) - fakeredis bumped from
>=2.34.0to>=2.34.1 - fastapi bumped from
>=0.133.0to>=0.135.1 - grpcio / grpcio-health-checking floor lowered from
>=1.78.1to>=1.78.0 - confluent-kafka bumped from
>=2.13.0to>=2.13.2 - boto3 (minio extra) bumped from
>=1.42.55to>=1.42.64 - sqlalchemy / sqlalchemy[asyncio] bumped from
>=2.0.46to>=2.0.47 - bandit (dev) bumped from
>=1.9.3to>=1.9.4
Full Changelog: 4.3.4...4.3.5
4.3.4
Fixed
Models - Errors
- BaseError
__str__Enhancement - Improved string representation to expose full error context__str__now returns a structured, human-readable string includingclass name,code,message,http_status,grpc_status, andadditional_data- Previous output was a minimal
[code] messageformat, making debugging difficult - New format:
ClassName(code='...', message='...', http_status=..., grpc_status=..., additional_data=...) - Consistent with
__repr__behaviour — no information is hidden in logs or tracebacks
Changed
Dependencies
- FastAPI bumped from
>=0.131.0to>=0.133.0 - boto3 (minio extra) bumped from
>=1.42.54to>=1.42.55 - mkdocs-material (docs group) bumped from
>=9.7.2to>=9.7.3
Internal
Developer Tooling
- Cursor Rules Restructured - Replaced monolithic
checks.mdcandCLAUDE.mdwith focused, single-responsibility rule files- Added
python-code-style.mdc— string quoting, docstrings, line length, type hints, imports, error handling, complexity - Added
architecture-patterns.mdc— Clean Architecture layer map, import direction, lazy import policy - Added
typing-strict.mdc— strict type annotation conventions - Added
testing-bdd.mdc— BDD/Behave test conventions - Added
tooling-workflow.mdc—uv, Make targets, pre-commit hooks, docs, version bumping - Added
adapter-conventions.mdc— ports & adapters pattern, mock requirements, naming rules
- Added
Full Changelog: 4.3.3...4.3.4
4.3.3
Reverted
Models - DTOs
- Type-Safe Field References - Reverted the experimental type-safe field references feature
- Removed
FieldStrutility class that was introduced for field name representation - Removed
BaseMetametaclass from BaseDTO - Reverted changes to
range_dtos.pymodel validators - Removed associated BDD tests (
base_dtos.featureand test steps) - This feature is being reconsidered for a future implementation with better design
- Removed
Changed
Release Management
- Version Management - Reverted v4.3.2 release preparation
- Reset version numbers back to v4.3.1 state
- This version (v4.3.3) supersedes the cancelled v4.3.2 release
Full Changelog: 4.3.1...4.3.3