Skip to content

Commit aab64b4

Browse files
docs(changelog): add v4.0.5 release notes with Keycloak organizations, Ruff formatter, and dependency updates
1 parent f7fcb98 commit aab64b4

5 files changed

Lines changed: 294 additions & 201 deletions

File tree

.env.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ KEYCLOAK__VERIFY_SSL=false
6161
KEYCLOAK__TIMEOUT=30
6262

6363
# Elasticsearch Configuration
64-
ELASTIC__IMAGE=elastic/elasticsearch:9.2.1
64+
ELASTIC__IMAGE=elastic/elasticsearch:9.3.0
6565
ELASTIC__HOSTS=["http://localhost:9200"]
6666
ELASTIC__HTTP_USER_NAME=elastic
6767
ELASTIC__HTTP_PASSWORD=test_password

.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.14

docs/changelog.md

Lines changed: 123 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,152 @@
22

33
All notable changes to ArchiPy are documented in this changelog, organized by version.
44

5+
## [v4.1.0] - 2026-02-09
6+
7+
### Added
8+
9+
#### Adapters - Keycloak
10+
11+
- **Organization Management** - Implemented comprehensive organization management functionality
12+
- Added `create_organization()` method for creating new organizations
13+
- Added `update_organization()` method for updating existing organizations
14+
- Added `delete_organization()` method for removing organizations
15+
- Added `add_organization_member()` method for adding members to organizations
16+
- Added `remove_organization_member()` method for removing members from organizations
17+
- Added `get_organization_members()` method for retrieving organization member lists
18+
- Implemented both sync (`KeycloakAdapter`) and async (`AsyncKeycloakAdapter`) versions
19+
- Enhanced feature tests to cover all organization operations
20+
21+
- **Realm Configuration** - Added realm update functionality
22+
- Implemented `update_realm()` method to enable organization support
23+
- Added configuration options for organization features in realms
24+
- Updated test containers to support organization feature in Keycloak
25+
26+
#### Tests
27+
28+
- **StarRocks TestContainer** - Added TestContainer support for StarRocks database
29+
- Integrated StarRocks container for integration testing
30+
- Enhanced test coverage for StarRocks adapter functionality
31+
32+
- **Atomic Transaction Tests** - Expanded test coverage for atomic decorators
33+
- Added PostgreSQL support for atomic transaction tests
34+
- Added SQLite support for atomic transaction tests
35+
- Improved test reliability across different database backends
36+
37+
### Changed
38+
39+
#### Development Tools
40+
41+
- **Formatter Migration** - Replaced Black with Ruff formatter
42+
- Migrated from Black to Ruff formatter for code formatting
43+
- Applied Ruff formatting fixes across entire codebase
44+
- Updated CI/CD workflows to use Ruff formatter
45+
- Maintained 120 character line length standard
46+
47+
#### CI/CD
48+
49+
- **Workflow Improvements** - Enhanced GitHub Actions workflows
50+
- Separated Ruff and Ty linting into dedicated workflows
51+
- Refactored Ty workflow for better performance
52+
- Bumped `actions/cache` from version 4 to 5
53+
- Improved workflow reliability and execution speed
54+
55+
### Fixed
56+
57+
#### Configuration
58+
59+
- **Type Safety** - Resolved type checker errors
60+
- Fixed type errors in `base_config.py`
61+
- Fixed type errors in `keycloak_utils.py`
62+
- Improved type hint accuracy across configuration modules
63+
64+
#### Documentation
65+
66+
- **Module References** - Fixed documentation issues
67+
- Removed reference to non-existent `error_message_types` module
68+
- Updated documentation to reflect current module structure
69+
70+
### Chore
71+
72+
#### Dependencies
73+
74+
- **Python Version** - Updated to Python 3.14
75+
- Added `.python-version` file with Python 3.14
76+
- Updated all Python version references to 3.14
77+
- Ensured compatibility with Python 3.14 features
78+
79+
- **Core Dependencies** - Updated multiple dependencies to latest versions
80+
- Updated `cachetools` from `>=6.2.6` to `>=7.0.0` (cache, keycloak, minio, scylladb extras)
81+
- Updated `elasticsearch` from `>=9.2.1` to `>=9.3.0` (elasticsearch and elasticsearch-async extras)
82+
- Updated `fastapi` from `>=0.128.0` to `>=0.128.5` (fastapi extra)
83+
- Updated `grpcio` from `>=1.76.0` to `>=1.78.0` (grpc extra)
84+
- Updated `grpcio-health-checking` from `>=1.76.0` to `>=1.78.0` (grpc extra)
85+
- Updated `sentry-sdk` from `>=2.51.0` to `>=2.52.0` (sentry extra)
86+
- Updated `temporalio` from `>=1.21.1` to `>=1.22.0` (temporalio extra)
87+
- Updated `testcontainers` from `>=4.14.0` to `>=4.14.1` (testcontainers extra)
88+
89+
- **Development Dependencies** - Updated development tools
90+
- Updated `ty` from `>=0.0.14` to `>=0.0.15` (type checker)
91+
- Updated `ruff` from `>=0.14.14` to `>=0.15.0` (linter and formatter)
92+
- Updated `validate-pyproject` from `>=0.24.1` to `>=0.25`
93+
94+
- **Documentation Dependencies** - Updated documentation tools
95+
- Updated `mkdocstrings` from `>=1.0.2` to `>=1.0.3`
96+
-
97+
- **Test Environment** - Updated test configuration
98+
- Updated Elasticsearch test image from `9.2.1` to `9.3.0` in `.env.test`
99+
5100
## [v4.0.4] - 2026-01-31
6101

7102
### Changed
8103

9104
#### Helpers - Decorators
10105

11106
- **Enhanced Exception Handling** - Improved exception handling in SQLAlchemy atomic decorators
12-
- Changed exception handling from `Exception` to `BaseException` for comprehensive error catching
13-
- Updated `_handle_db_exception()` function signature to accept `BaseException` instead of `Exception`
14-
- Enhanced error handling in both sync and async atomic decorator implementations
15-
- Ensures all exceptions (including system exceptions) are properly caught and handled
107+
- Changed exception handling from `Exception` to `BaseException` for comprehensive error catching
108+
- Updated `_handle_db_exception()` function signature to accept `BaseException` instead of `Exception`
109+
- Enhanced error handling in both sync and async atomic decorator implementations
110+
- Ensures all exceptions (including system exceptions) are properly caught and handled
16111

17112
#### Models - Types
18113

19114
- **Enum Value Standardization** - Standardized all enum values to uppercase format for consistency
20-
- **SortOrderType**: Changed `ASCENDING` and `DESCENDING` from lowercase to uppercase
21-
- **FilterOperationType**: Changed all 15 operation types to uppercase (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IN_LIST, NOT_IN_LIST, LIKE, ILIKE, STARTS_WITH, ENDS_WITH, CONTAINS, IS_NULL, IS_NOT_NULL)
22-
- **EmailAttachmentDispositionType**: Changed `ATTACHMENT` and `INLINE` from lowercase to uppercase
23-
- **TimeIntervalUnitType**: Changed all 7 unit types to uppercase (SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEAR)
24-
- Improved consistency with other enum patterns in the codebase
25-
- Enhanced code readability and standardization across all type definitions
115+
- **SortOrderType**: Changed `ASCENDING` and `DESCENDING` from lowercase to uppercase
116+
- **FilterOperationType**: Changed all 15 operation types to uppercase (EQUAL, NOT_EQUAL, LESS_THAN,
117+
LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IN_LIST, NOT_IN_LIST, LIKE, ILIKE, STARTS_WITH,
118+
ENDS_WITH, CONTAINS, IS_NULL, IS_NOT_NULL)
119+
- **EmailAttachmentDispositionType**: Changed `ATTACHMENT` and `INLINE` from lowercase to uppercase
120+
- **TimeIntervalUnitType**: Changed all 7 unit types to uppercase (SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS,
121+
YEAR)
122+
- Improved consistency with other enum patterns in the codebase
123+
- Enhanced code readability and standardization across all type definitions
26124

27125
### Fixed
28126

29127
#### Adapters - StarRocks
30128

31129
- **Docstring Formatting** - Fixed docstring formatting in StarRocks session manager
32-
- Corrected docstring formatting in `get_connection_args()` method
33-
- Improved code documentation consistency
130+
- Corrected docstring formatting in `get_connection_args()` method
131+
- Improved code documentation consistency
34132

35133
### Chore
36134

37135
#### Dependencies
38136

39137
- **Comprehensive Dependency Updates** - Updated multiple dependencies to latest versions
40-
- Updated `cachetools` from `>=6.2.4` to `>=6.2.6` (cache, keycloak, minio, scylladb extras)
41-
- Updated `cryptography` from `46.0.3` to `46.0.4` for enhanced security
42-
- Updated `protobuf` from `>=6.33.4` to `>=6.33.5` (grpc extra)
43-
- Updated `pyjwt` from `>=2.10.1` to `>=2.11.0` (jwt extra)
44-
- Updated `python-keycloak` from `>=7.0.2` to `>=7.0.3` (keycloak extra)
45-
- Updated `python-multipart` from `0.0.21` to `0.0.22`
46-
- Updated `rich` from `14.3.0` to `14.3.1`
47-
- Updated `rich-toolkit` from `0.17.1` to `0.17.2`
48-
- Updated `sentry-sdk` from `>=2.50.0` to `>=2.51.0` (sentry extra)
49-
- Updated `ty` from `>=0.0.13` to `>=0.0.14` (dev dependency)
50-
- Updated `mkdocstrings` from `>=1.0.1` to `>=1.0.2` (docs dependency)
51-
- Updated `pathspec` from `1.0.3` to `1.0.4`
52-
- Updated `orjson` from `3.11.5` to `3.11.6`
138+
- Updated `cachetools` from `>=6.2.4` to `>=6.2.6` (cache, keycloak, minio, scylladb extras)
139+
- Updated `cryptography` from `46.0.3` to `46.0.4` for enhanced security
140+
- Updated `protobuf` from `>=6.33.4` to `>=6.33.5` (grpc extra)
141+
- Updated `pyjwt` from `>=2.10.1` to `>=2.11.0` (jwt extra)
142+
- Updated `python-keycloak` from `>=7.0.2` to `>=7.0.3` (keycloak extra)
143+
- Updated `python-multipart` from `0.0.21` to `0.0.22`
144+
- Updated `rich` from `14.3.0` to `14.3.1`
145+
- Updated `rich-toolkit` from `0.17.1` to `0.17.2`
146+
- Updated `sentry-sdk` from `>=2.50.0` to `>=2.51.0` (sentry extra)
147+
- Updated `ty` from `>=0.0.13` to `>=0.0.14` (dev dependency)
148+
- Updated `mkdocstrings` from `>=1.0.1` to `>=1.0.2` (docs dependency)
149+
- Updated `pathspec` from `1.0.3` to `1.0.4`
150+
- Updated `orjson` from `3.11.5` to `3.11.6`
53151

54152
## [v4.0.3] - 2026-01-24
55153

pyproject.toml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,32 @@ license = { file = "LICENSE" }
2020
# Core optional dependencies
2121
aiosqlite = ["aiosqlite>=0.22.1"]
2222
behave = ["behave>=1.3.3"]
23-
cache = ["cachetools>=6.2.6", "async-lru>=2.1.0"]
23+
cache = ["cachetools>=7.0.0", "async-lru>=2.1.0"]
2424
dependency-injection = ["dependency-injector>=4.48.3"]
2525
elastic-apm = ["elastic-apm>=6.25.0"]
26-
elasticsearch = ["elasticsearch>=9.2.1"]
27-
elasticsearch-async = ["elasticsearch[async]>=9.2.1"]
26+
elasticsearch = ["elasticsearch>=9.3.0"]
27+
elasticsearch-async = ["elasticsearch[async]>=9.3.0"]
2828
fakeredis = ["fakeredis>=2.33.0"]
29-
fastapi = ["fastapi[all]>=0.128.0"]
30-
grpc = ["grpcio>=1.76.0", "grpcio-health-checking>=1.76.0", "protobuf>=6.33.5"]
29+
fastapi = ["fastapi[all]>=0.128.5"]
30+
grpc = ["grpcio>=1.78.0", "grpcio-health-checking>=1.78.0", "protobuf>=6.33.5"]
3131
jwt = ["pyjwt>=2.11.0"]
3232
kafka = ["confluent-kafka>=2.13.0"]
3333
kavenegar = ["kavenegar>=1.1.2"]
34-
keycloak = ["python-keycloak>=7.0.3", "cachetools>=6.2.6", "async-lru>=2.1.0"]
35-
minio = ["minio>=7.2.20", "cachetools>=6.2.6", "async-lru>=2.1.0"]
34+
keycloak = ["python-keycloak>=7.0.3", "cachetools>=7.0.0", "async-lru>=2.1.0"]
35+
minio = ["minio>=7.2.20", "cachetools>=7.0.0", "async-lru>=2.1.0"]
3636
parsian-ipg = ["zeep>=4.3.2", "requests[socks]>=2.32.5"]
3737
postgres = ["psycopg[binary,pool]>=3.3.2"]
3838
prometheus = ["prometheus-client>=0.24.1"]
3939
redis = ["redis[hiredis]>=7.1.0"]
4040
scheduler = ["apscheduler>=3.11.2"]
41-
scylladb = ["scylla-driver>=3.29.7", "lz4>=4.4.5", "cachetools>=6.2.6", "async-lru>=2.1.0"]
42-
sentry = ["sentry-sdk>=2.51.0"]
41+
scylladb = ["scylla-driver>=3.29.7", "lz4>=4.4.5", "cachetools>=7.0.0", "async-lru>=2.1.0"]
42+
sentry = ["sentry-sdk>=2.52.0"]
4343
sqlalchemy = ["sqlalchemy>=2.0.46"]
4444
sqlalchemy-async = ["sqlalchemy[asyncio]>=2.0.46"]
4545
starrocks = ["starrocks>=1.3.3", "pymysql>=1.1.2"]
4646
starrocks-async = ["starrocks>=1.3.3", "aiomysql>=0.3.2"]
47-
temporalio = ["temporalio>=1.21.1"]
48-
testcontainers = ["testcontainers>=4.14.0"]
47+
temporalio = ["temporalio>=1.22.0"]
48+
testcontainers = ["testcontainers>=4.14.1"]
4949

5050
[tool.pytest.ini_options]
5151
asyncio_mode = "auto"
@@ -68,25 +68,25 @@ dev = [
6868
"add-trailing-comma>=4.0.0",
6969
"bandit>=1.9.3",
7070
"codespell>=2.4.1",
71-
"ty>=0.0.14",
71+
"ty>=0.0.15",
7272
"pre-commit-hooks>=6.0.0",
7373
"pre-commit>=4.5.1",
74-
"ruff>=0.14.14",
74+
"ruff>=0.15.0",
7575
"types-cachetools>=6.2.0.20251022",
7676
"types-grpcio>=1.0.0.20251009",
7777
"types-protobuf>=6.32.1.20251210",
7878
"types-pymysql>=1.1.0.20251220",
7979
"types-regex>=2026.1.15.20260116",
8080
"types-requests>=2.32.4.20260107",
81-
"validate-pyproject>=0.24.1",
81+
"validate-pyproject>=0.25",
8282
]
8383

8484
docs = [
8585
"mkdocs-autorefs>=1.4.3",
8686
"mkdocs-material>=9.7.1",
8787
"mkdocs>=1.6.1",
8888
"mkdocstrings-python>=2.0.1",
89-
"mkdocstrings>=1.0.2",
89+
"mkdocstrings>=1.0.3",
9090
"pymdown-extensions>=10.20.1",
9191
]
9292

0 commit comments

Comments
 (0)