Release Notes¶
v7.0.0 (2026-04-29)¶
Fail-secure by default (upstream), agent-stats surface, version reporting (v7.0.0)¶
- Breaking (upstream) —
SecurityConfig.fail_securenow defaults toTrue(inherited fromguard-core >= 3.0.0). When any security check raises an unhandled exception, the request is now blocked with HTTP 500 instead of logging and falling through. Bugs in checks that previously slipped past as silent fail-open responses now surface immediately. Restore the old behavior on deployments that depend on it viaSecurityConfig(fail_secure=False). Recommended migration: keep the new default, surface any check exceptions in your monitoring, and fix them — the previous default could mask serious bugs. The fastapi-guard major bump tracks this upstream change so deployments see a clear signal. - Added —
SecurityMiddleware.agent_statsread-only@propertyreturning the agent's telemetry buffer state. Returns{"enabled": False}when no agent is wired; otherwise returns{"enabled": True, **agent_handler.get_stats()}exposingevents_dropped,metrics_dropped,circuit_breaker_state, and other agent counters. No caching — fresh on each call. Lets app teams build health endpoints that surface agent-side drops and circuit-breaker trips without scraping the agent directly. - Added —
from guard import __version__— package version is now exported viaimportlib.metadata.version("fastapi-guard")with a"0.0.0+unknown"fallback if the package is not installed (development from source). Pairs withguard-core >= 3.0.0'sSecurityConfig.agent_guard_versionso application code can wire the fastapi-guard version through to the agent for SaaS-side telemetry attribution:SecurityConfig(agent_guard_version=__version__). - Compatibility —
SecurityMiddleware.agent_statsis purely additive; no existing API was changed.__version__was previously absent; reading it before this release returnedNonevia missing-attribute fallback in some integrations.
v6.0.0 (2026-04-26)¶
CORS routed through SecurityMiddleware via guard_core.cors_handler (v6.0.0)¶
- Breaking — Removed
SecurityMiddleware.configure_cors(app, config). CORS is now handled insideSecurityMiddleware; configure viaSecurityConfig.cors_*fields and the middleware activates CORS automatically. The security pipeline now runs againstOPTIONSpreflight requests — previously the external StarletteCORSMiddlewareshort-circuited preflights ahead ofSecurityMiddleware, allowing banned IPs and rate-limited clients to preflight freely. - Migration — Before:
app.add_middleware(SecurityMiddleware, config=config)+SecurityMiddleware.configure_cors(app, config). After:app.add_middleware(SecurityMiddleware, config=config)only. - Fixed — Cross-origin preflight requests to passthrough paths (e.g.
exclude_paths=["/health"]) now receive a valid CORS response. Preflight handling runs ahead of the passthrough/bypass short-circuit so the browser permission check works for excluded paths. - Fixed — Cross-origin GETs to passthrough/bypass paths now carry CORS headers on their responses, matching the previous outer-CORSMiddleware semantics that the
configure_corsdesign provided. - Fixed —
cloud_handler.refresh()was being called withoutawait— the coroutine was never awaited, meaning cloud-IP refreshes silently never completed in production. Surfaced and fixed at root after removing the[[tool.mypy.overrides]] follow_imports = "skip"block that had been hiding the type error. - Internal — Removed all three
[[tool.mypy.overrides]]suppression blocks (pydantic.*,redis.*,guard_core.*). All three packages shippy.typedin their current versions; thefollow_imports = "skip"settings had been masking real type errors. Stripped[tool.uv.sources] guard-corelocal-path block from committed pyproject.toml. pyproject.toml dependency on guard-core remains unconstrained. - Requires —
guard-core>=2.2.0(declared as unconstrainedguard-corein pyproject; documented here for upgrade guidance).
v5.2.0 (2026-04-25)¶
guard-core 2.0.0 adoption (v5.2.0)¶
- Changed —
SecurityMiddleware.suspicious_request_countsis now typeddict[str, dict[str, int]](per-IP, per-category nested counters) to match the guard-core 2.0.0 protocol shape. The middleware itself does not mutate this attribute directly — guard-core'sSuspiciousActivityCheckowns the writes — so no behavior change is visible to user code that did not reach into this internal field. - Changed — Test fixtures that previously mocked
guard_core.utils.detect_penetration_attemptandguard_core.core.checks.implementations.suspicious_activity.detect_penetration_patternswith raw(bool, str)tuples now returnDetectionResult(is_threat=..., trigger_info=...), mirroring the new return type from guard-core's detection engine. - Compat — Requires guard-core 2.0.0 or newer. The major-bump in guard-core changes
suspicious_request_countsto a per-category nested dict, replacesdetect_penetration_attempt/detect_penetration_patterns2-tuple returns withDetectionResult, and migrates the cloud-IP cache namespace. fastapi-guard's middleware was updated to match the new protocol shape; user code that didn't reach into those internals continues to work unchanged. - User-visible impact — None for users on the public API (
SecurityConfig,SecurityMiddleware,SecurityDecorator, the 20+ per-route decorators). Users who imported guard-core internals directly (e.g.detect_penetration_attempt,detect_penetration_patterns, or the rawsuspicious_request_countsshape) must adapt to the new return type / nested dict — see the guard-core 2.0.0 release notes for the migration guide.
v5.1.1 (2026-04-24)¶
Integration fixes for OTel + enrichment pipeline (v5.1.1)¶
- Fixed —
SecurityMiddleware.initialize()is now invoked on the first request via a_ensure_initialized()asyncio-lock guard insidedispatch(). Previously the method existed but was never called, soHandlerInitializer.initialize_agent_integrations()never ran and the composite handler stayedNone. Without this fix, no OTel span or Logfire log was ever emitted regardless of config. - Fixed — After composite construction,
self.agent_handleris rebound from the bareguard-agentclient to the composite. Downstream callers that receivemiddleware.agent_handler(most notablyguard_core.utils.extract_client_ip → send_agent_event) now route through the composite, so enrichment and OTel see every event instead of the ~13% that happened to go through the pipeline directly. - Fixed —
BehavioralContextnow receiveshandler_initializer.behavior_tracker, matching the guard-core 1.2.1 wiring. This closes the last architectural gap soguard.behavior.recent_event_countpopulates end-to-end whenenable_enrichment=True. - Added —
tests/test_middleware/test_middleware_lifecycle.py— regression tests that pin lazy initialization semantics (runs once on first dispatch, no-op when telemetry disabled, single-init under concurrent dispatch) and confirmbehavioral_processor.context.behavior_trackeris the same object owned byhandler_initializer. - Requires —
guard-core>=1.2.1for the matching OTLP endpoint normalization andBehaviorTrackerwiring fixes. Install the latest withuv add fastapi-guardorpip install -U fastapi-guard guard-core. - User-visible impact — Users with
enable_otel=True,enable_logfire=True, orenable_enrichment=Truepreviously saw silent drops: the middleware never raninitialize(), so the composite handler was never constructed and nothing reached OTel, Logfire, or the enricher. After this release the composite is built on the first request and all downstream agent callers receive it, so every event flows through telemetry and enrichment as configured. NoSecurityConfigchanges required.
v5.1.0 (2026-04-24)¶
Telemetry pipeline wiring fix (v5.1.0)¶
Adopts guard-core 1.1.0 and fixes a middleware wiring bug that prevented OpenTelemetry, Logfire, and event/metric/check-log muting from seeing anything emitted by the request-path security pipeline.
- Fixed —
SecurityMiddlewarepreviously constructedSecurityEventBus(agent_handler, ...)andMetricsCollector(agent_handler, ...)directly inside__init__, using the bareguard_agenthandler (orNone).HandlerInitializer.initialize_agent_integrations()then built aCompositeAgentHandlerthat no code path ever reached, because the event bus / metrics collector were frozen on the bare handler from__init__. As a result, every event emitted through the request pipeline (SecurityEventBus.send_middleware_event) and every request metric bypassed OTel, Logfire, and the configuredmuted_event_types/muted_metric_typesfilter. This release rewires the middleware to callHandlerInitializer.build_event_bus()and.build_metrics_collector()afterinitialize_agent_integrations()completes, so the composite handler is on the hot path. The dependent contexts (ResponseContext,ValidationContext,BypassContext,BehavioralContext) are rebuilt at the same point so they bind to the post-init event bus. - Added —
tests/test_middleware/test_middleware_wiring.py— four regression tests that pinmiddleware.event_bus.agent_handlerandmiddleware.metrics_collector.agent_handlertoCompositeAgentHandleraftermiddleware.initialize()when OTel or Logfire is enabled, and confirm all dependent contexts reference the post-init event bus. - Dependencies —
guard-core>=1.1.0,<2.0.0(was unpinned). - User-visible impact — Users already setting
enable_otel=Trueorenable_logfire=TrueonSecurityConfigwere previously getting handler-path events only (ip_banned, rate_limited fromip_ban_manager/rate_limit_handler, etc.) — but never pipeline-path events (penetration_attempt,authentication_failed,user_agent_blocked,https_enforced, etc.) or request metrics (guard.request.duration,guard.request.count,guard.error.count). After this release, every event and every metric flows through the composite, which means OTel spans, Logfire logs, and all mute fields (muted_event_types,muted_metric_types,muted_check_logs) work as documented. NoSecurityConfigchanges required; existing configurations produce strictly more telemetry, not less.
v5.0.0 (2026-03-26)¶
Major Release (v5.0.0)¶
- Guard-Core migration: FastAPI Guard is now a thin adapter over guard-core, the framework-agnostic security engine. All security logic (17 checks, 8 handlers, detection engine) lives in guard-core; this package provides only the FastAPI/Starlette integration layer.
- Zero breaking changes to public API: All existing imports (
from guard import SecurityConfig,from guard.middleware import SecurityMiddleware, etc.) continue to work exactly as before. - Shared engine across frameworks: The same security engine now powers flaskapi-guard and djangoapi-guard, ensuring consistent security behavior across all three frameworks.
v4.4.1 (2026-03-16)¶
Bug Fixes (v4.4.1)¶
- Per-endpoint rate limit check: Fixed rate limit check to properly evaluate endpoint-specific rate limits. Previously, the rate limit check was only evaluating global rate limits.
v4.4.0 (2026-03-14)¶
New Features (v4.4.0)¶
- Configurable cloud IP refresh interval: New
cloud_ip_refresh_intervalconfig field (default: 3600s, valid range: 60-86400s) allows tuning how often cloud provider IP ranges are refreshed. The interval is propagated to Redis TTL for cache consistency. - Change detection logging for cloud IP refreshes: When cloud IP ranges are refreshed, additions and removals are logged per provider (e.g.,
+12 added, -3 removed), providing visibility into IP range mutations. - Context-aware detection engine: Suspicious pattern rules are now tagged with applicable input contexts (
query_param,url_path,header,request_body). Patterns are only evaluated against relevant input sources, reducing false positives. - Structured JSON logging: New
log_format="json"config option outputs logs as structured JSON ({"timestamp": "...", "level": "...", "logger": "...", "message": "..."}), enabling integration with log aggregation systems (ELK, Datadog, CloudWatch). - Per-provider
last_updatedtimestamps:CloudManagernow tracks when each provider's IP ranges were last refreshed viacloud_handler.last_updated["AWS"], returningdatetime | None.
v4.3.1 (2026-03-11)¶
Bug Fixes (v4.3.1)¶
- Geographic rate limit check: Fixed geo-based rate limiting by implementing the missing
_check_geo_rate_limitmethod inRateLimitCheck. Previously, geo rate limits configured via the@security.geo_rate_limitdecorator were stored but never enforced. The rate limit pipeline now correctly evaluates geo-based limits at priority 3 (after endpoint-specific and route-specific limits). - Geo rate limit decorator: Fixed
RateLimitingMixin.geo_rate_limitdecorator to store limits onroute_config.geo_rate_limitsinstead of incorrectly serializing them intorequired_headers. - IPInfo country whitelist fail-closed: When
whitelist_countriesis configured and a client's country cannot be determined,IPInfoManager.check_country_accessnow correctly blocks the request (fail-closed) instead of allowing it through.
Enhancements (v4.3.1)¶
- Timezone-aware time windows: Time window restrictions now support configurable timezones via the
timezonefield intime_restrictions. UsesZoneInfofor proper timezone handling with a safe fallback to UTC for invalid timezone strings. - Geo rate limit RouteConfig support: Added
geo_rate_limitsattribute toRouteConfigfor proper type-safe storage of geographic rate limit configurations.
v4.3.0 (2026-03-10)¶
Bug Fixes (v4.3.0)¶
- Whitelisted IP bypass: Whitelisted IPs now correctly bypass rate limiting, cloud provider blocking, user agent filtering, and suspicious activity detection checks. Previously, the whitelist flag was only checked during IP security validation but not propagated to downstream security checks.
Enhancements (v4.3.0)¶
- Version bump helper: Added
make bump-version VERSION=x.y.zcommand and.github/scripts/bump_version.pyscript to automate version updates across all project files (pyproject.toml, .mike.yml, versions.json, docs/index.md, changelogs).
CI/CD (v4.3.0)¶
- Docker actions: Bumped
docker/login-actionfrom 3 to 4 anddocker/setup-compose-actionfrom 1 to 2. - Pre-commit: Simplified pre-commit checks in scheduled lint workflow and disabled semgrep in pre-commit configuration.
v4.2.2 (2025-12-02)¶
Support/Compatibility (v4.2.2)¶
- Python 3.14: Added support for Python 3.14.
v4.2.1 (2025-11-05)¶
Bug Fixes (v4.2.1)¶
- IPInfo redirect URLs: IPInfo API sometimes responds with 302 code, and by not handling the redirect, the database would not be downloaded. Now,
IPInfoManagerclass follows redirects.
v4.2.0 (2025-10-16)¶
Internal Refactoring (No Breaking Changes) (v4.2.0)¶
Major architectural transformation completed (v4.2.0):
- Middleware Refactoring: Broke down
middleware.pyfrom monolithic file into modular architecture. - Maintainability Improvement: Improved from MI 0.00 (Rank C - "unmaintainable") to MI 54.51 (Rank A)
- Complexity Reduction: Average complexity reduced from ~15 to 2.35 (84.3% improvement)
- Code Reduction: middleware.py reduced by 77.4% through modular extraction
- Test Coverage: Maintained at 100% throughout refactoring
- Zero Breaking Changes: All public APIs remain unchanged
New Internal Architecture (guard/core/) (v4.2.0)¶
There are now 9 specialized modules (all achieving Rank A maintainability, MI 56-82):
checks/- Security check implementations using Chain of Responsibility patternSecurityCheckbase classSecurityCheckPipelinefor orchestration-
17 check implementations in
implementations/ -
events/- Event system for middleware actions SecurityEventBusfor centralized event dispatching-
MetricsCollectorfor request metrics collection -
initialization/- Handler initialization logic -
HandlerInitializerfor centralized Redis, Agent, and handler setup -
responses/- Response handling ErrorResponseFactoryfor response creation and processing-
ResponseContextfor dependency injection -
routing/- Routing and decorator resolution RouteConfigResolverfor route configuration-
RoutingContextfor dependency injection -
validation/- Request validation utilities RequestValidatorfor HTTPS checks, proxy validation, time windows-
ValidationContextfor dependency injection -
bypass/- Security bypass handling BypassHandlerfor passthrough and bypass logic-
BypassContextfor dependency injection -
behavioral/- Behavioral rule processing BehavioralProcessorfor usage and return rulesBehavioralContextfor dependency injection
Benefits (v4.2.0)¶
- Faster Development: Faster feature additions
- Better Testability: Each module independently testable
- Improved Performance: Better code organization and caching
- Maintainable Codebase: Single Responsibility Principle applied throughout
Migration Notes (v4.2.0)¶
For Users: No migration needed - all existing code works unchanged
For Contributors: See ARCHITECTURE_CHANGES.md for detailed module breakdown
Important: The guard/core/* modules are internal implementation details. Always import from public API.
v4.1.2 (2025-09-12)¶
Enhancements (v4.1.2)¶
- Added dynamic rule updated event type.
v4.1.0 (2025-09-07)¶
New Features (v4.1.0)¶
- Enhanced Security Headers: Added 5 new default security headers following OWASP best practices:
X-Permitted-Cross-Domain-Policies: none- Restricts Adobe Flash cross-domain accessX-Download-Options: noopen- Prevents file download execution in Internet ExplorerCross-Origin-Embedder-Policy: require-corp- Controls cross-origin resource embeddingCross-Origin-Opener-Policy: same-origin- Controls cross-origin window interactionsCross-Origin-Resource-Policy: same-origin- Controls cross-origin resource access- Security Validation Framework: Comprehensive input validation for all header configurations
- Advanced CORS Validation: Runtime validation and logging for CORS misconfiguration attempts
- Security Event Logging: Enhanced logging for security violations and configuration warnings
Security Fixes (v4.1.0)¶
- Fixed header injection vulnerability in SecurityHeadersManager - preventing injection attacks via newlines and control characters
- Enhanced CORS security - wildcard origins (
*) now properly blocked when credentials are enabled to prevent security bypass - Implemented thread-safe singleton pattern with double-checked locking to prevent race conditions in multi-threaded environments
- Secure cache key generation using SHA256 hashing to prevent cache poisoning attacks
- Added CSP unsafe directive validation - warnings for
'unsafe-inline'and'unsafe-eval'directives - HSTS preload validation - ensures preload requirements (max_age ≥ 31536000, includeSubDomains) are met
- Input validation for all header values - sanitization of control characters and length limits (8192 bytes)
Improvements (v4.1.0)¶
- Performance: Optimized cache key generation using SHA256 with path normalization
- Reliability: Thread-safe singleton implementation prevents multiple instances in concurrent environments
- Security: All header values now validated against injection attacks, newlines, and excessive length
- Monitoring: Improved security event logging for better observability and debugging
- Documentation: Updated security headers documentation with new features and best practices
v4.0.3 (2025-08-09)¶
Bug Fixes (v4.0.3)¶
- Logging Configuration Fix: Fixed
custom_log_fileconfiguration being ignored - file logging now works correctly - Logging Behavior: File logging is now truly optional - only enabled when
custom_log_fileis explicitly set - Namespace Consistency: All FastAPI Guard components now use consistent
fastapi_guard.*logger namespace hierarchy - Root logger:
fastapi_guard - Handlers:
fastapi_guard.handlers.{component} - Decorators:
fastapi_guard.decorators.{component} - Detection Engine:
fastapi_guard.detection_engine - Console Output: Console logging is now always enabled for visibility, regardless of file logging configuration
- Passive Mode Enhancement: Fixed passive mode to properly log without blocking for all security checks including rate limiting, suspicious patterns, and decorator violations
Improvements (v4.0.3)¶
- Logger Isolation: FastAPI Guard logs are now properly isolated from user application logs
- Test Compatibility: Logger propagation enabled for better test framework integration
- Documentation: Updated all logging documentation to reflect actual behavior
- Passive Mode Consistency: All security checks now properly respect passive mode - logging violations without blocking requests
- Enhanced Logging Context: Improved log messages with better context for passive mode operations, including trigger information for suspicious patterns
v4.0.2 (2025-08-07)¶
New Features (v4.0.2)¶
- Sus Patterns Handler Overhaul: Complete redesign of the suspicious patterns detection system with modular architecture
- Pattern Compiler: Safe regex execution with configurable timeouts to prevent ReDoS attacks
- Content Preprocessor: Intelligent content truncation that preserves attack signatures
- Semantic Analyzer: Heuristic-based detection using TF-IDF and n-gram analysis for obfuscated attacks
- Performance Monitor: Real-time tracking of pattern execution times and anomaly detection
- Enhanced Detection API: Rich detection results with threat scores, detailed threat information, and performance metrics
- Lazy Component Initialization: Detection components only load when explicitly configured
- Comprehensive Configuration: New
detection_*configuration options for fine-tuning all components
Improvements (v4.0.2)¶
- Pattern Matching Performance: Timeout protection prevents slow patterns from blocking requests
- Detection Accuracy: Multi-layered approach combines regex patterns with semantic analysis
- Memory Efficiency: Configurable limits on content length and pattern tracking
- Observability: Detailed performance metrics and slow pattern identification
- Backward Compatibility: Legacy
detect_pattern_matchAPI maintained for smooth migration - Agent Integration: Automatic telemetry for pattern detection events and performance metrics
v3.0.2 (2025-07-22)¶
Security Fixes (v3.0.2)¶
- IMPORTANT: Enhanced ReDoS prevention - Prevent regex bypass due to length limitations on pattern regex. (GHSA-rrf6-pxg8-684g)
- CVE ID: CVE-2025-54365
- Added timeout to avoid catastrophical backtracking and/or regex bypass by length limitation expression.
- Added new
regex_timeoutparameter toSecurityConfigto allow for custom timeout for regex pattern matching.
v3.0.1 (2025-07-07)¶
Security Fixes (v3.0.1)¶
- IMPORTANT: Prevented ReDoS (Regular Expression Denial of Service - CWE-1333) attacks by replacing unbounded regex quantifiers with bounded ones. (GHSA-j47q-rc62-w448)
- CVE ID: CVE-2025-53539
v3.0.0 (2025-06-21)¶
New Features (v3.0.0)¶
- Security Decorators: Added comprehensive route-level security decorator system
SecurityDecoratorclass combining all security capabilities- Access control decorators for IP filtering, geographic restrictions, and cloud provider blocking
- Authentication decorators for HTTPS enforcement, auth requirements, and API key validation
- Rate limiting decorators with custom limits and geographic rate limiting
- Behavioral analysis decorators for usage monitoring, return pattern detection, and frequency analysis
- Content filtering decorators for content type validation, size limits, and user agent blocking
- Advanced decorators for time windows, suspicious detection, and honeypot detection
- Route-specific configuration that can override global middleware settings
- Seamless integration with existing SecurityMiddleware
- Behavior Manager: Added behavioral analysis and monitoring system
BehaviorTrackerfor tracking and analyzing user behavior patternsBehaviorRulefor defining behavioral analysis rules- Support for endpoint usage tracking, return pattern analysis, and frequency detection
- Multiple pattern formats including JSON paths, regex, and status codes
- Automated actions (ban, alert, log, throttle) based on behavioral thresholds
- Redis integration for distributed behavioral tracking
v2.1.3 (2025-06-18)¶
Bug Fixes (v2.1.3)¶
v2.1.2 (2025-05-26)¶
Improvements (v2.1.2)¶
- Switched from Poetry to uv for package management
v2.1.1 (2025-05-08)¶
Bug Fixes (v2.1.1)¶
- Fixed
custom_response_modifierimplementation.
v2.1.0 (2025-05-08)¶
Improvements (v2.1.0)¶
- Rate Limiting: Replaced fixed window rate limiting with true sliding window algorithm
- Added atomic Redis Lua script for distributed rate limiting
- Improved timestamp tracking for more accurate request counting
- Fixed edge cases in rate limiting that could cause unexpected 429 errors
v2.0.0 (2025-05-05)¶
Security Fixes (v2.0.0)¶
- IMPORTANT: Fixed Remote Header Injection vulnerability via X-Forwarded-For manipulation (GHSA-77q8-qmj7-x7pp)
- CVE ID: CVE-2025-46814
- Added secure client IP extraction with trusted proxy validation
- Added new configuration parameters for proxy security:
trusted_proxies: List of trusted proxy IPs or CIDR rangestrusted_proxy_depth: Configurable proxy chain depthtrust_x_forwarded_proto: Option to trust X-Forwarded-Proto header
New Features (v2.0.0)¶
- IPInfo is now completely optional, you can implement your own
GeoIPHandler - Added protocol-based design for customizable geographical IP handling
- Introduced
GeoIPHandlerprotocol allowing custom implementations - Separated protocol definitions into dedicated modules
Improvements (v2.0.0)¶
- Deprecated
ipinfo_tokenandipinfo_db_pathin favor ofgeo_ip_handler - Improved type safety and code readability
- Added runtime type checking for custom GeoIP handlers
v1.5.0 (2025-05-01)¶
Improvements (v1.5.0)¶
- IpInfo token is now only required when using country filtering or cloud blocking
- Performance: Selective loading of IP geolocation database and cloud IP ranges
- Only download/process IP geolocation data when country filtering is configured
- Only fetch cloud provider IP ranges when cloud blocking is enabled
- Reduced startup time and memory usage when not using all security features
v1.4.0 (2025-04-30)¶
New Features (v1.4.0)¶
- Added configurable logging levels for normal and suspicious requests
- Enhanced log_activity function to support all logging levels
- Added ability to completely disable request logging
Improvements (v1.4.0)¶
- Improved performance by allowing complete disabling of normal request logging
- Better log level control for different environments (dev/prod)
v1.3.2 (2025-04-27)¶
New Features (v1.3.2)¶
- Created an interactive FastAPI Guard Playground
- Added
passive_modeoption to log suspicious activity without blocking requests - Enhanced
detect_penetration_attemptfunction to return trigger information
v1.2.2 (2025-04-07)¶
Improvements (v1.2.2)¶
- Added an empty
py.typed - Fixed the
package_dataconfiguration insetup.py - Added
mypyconfiguration topyproject.toml - Added
MANIFEST.in
v1.2.1 (2025-04-05)¶
New Features (v1.2.1)¶
- Added new pattern management methods to
SusPatternsManager: get_default_patterns()andget_custom_patterns()for separate pattern accessget_default_compiled_patterns()andget_custom_compiled_patterns()for separate compiled pattern access- Enhanced
remove_pattern()method to return success/failure status
Improvements (v1.2.1)¶
- Fixed issue with default pattern removal in
SusPatternsManager - Improved pattern separation between default and custom patterns
v1.2.0 (2025-04-04)¶
New Features (v1.2.0)¶
- Added dedicated
RateLimitManagerfor improved rate limiting functionality - TTLCache-based in-memory rate limiting still available
- Extended Redis support for distributed rate limiting
Improvements (v1.2.0)¶
- Fixed rate limiting logic to properly handle rate limiting
- Standardized Singleton pattern across all handlers
- Added new
keysanddelete_patternmethods toRedisManagerfor easy key/pattern retrieval/cleanup
v1.1.0 (2025-03-21)¶
New Features (v1.1.0)¶
- Added proper typing throughout the codebase
- Added custom Docker container for example app
- Added better Docker Compose support
Improvements (v1.1.0)¶
- Fixed multiple typing issues across test files
- Improved documentation for Docker container usage
- Enhanced serialization of Redis data
v1.0.0 (2025-02-19)¶
New Features (v1.0.0)¶
- Added Redis integration for distributed state management
Improvements (v1.0.0)¶
- Improved tests & testing coverage (100% coverage)
v0.4.0 (2025-02-16)¶
New Features (v0.4.0)¶
- Added
db_pathparameter toIPInfoManagerfor custom database locations
Improvements (v0.4.0)¶
- Improved IPInfo database handling with local caching
Bug Fixes (v0.3.4)¶
- Fixed Azure IP ranges download by adding proper User-Agent headers (#19)
- Fixed cloud provider validation logic to properly filter invalid entries
- Resolved test coverage gaps on all test files
v0.3.4 (2025-01-26)¶
Bug Fixes (v0.3.3)¶
- Fixed issue with accepted
HeadersonSwagger UIaccess/requests.
v0.3.3 (2024-12-14)¶
Bug Fixes (v0.3.2)¶
- Fixed package structure to properly include all required modules
- Resolved import issues with handlers package
- Improved package installation reliability