Skip to content

Conversation

Iamsdt
Copy link
Member

@Iamsdt Iamsdt commented May 22, 2025

Replaces the deprecated alecthomas/injector library with a new, custom-built dependency injection framework named custom_injector.

Key changes and features include:

  • New Core DI Framework (custom_injector):

    • Supports class, factory, and value providers.
    • Implements robust Transient and Singleton scopes.
    • Provides automatic constructor injection based on type hints.
    • Includes basic circular dependency detection.
  • Updated Integrations:

    • All fastapi_injector components (for both FastAPI and Taskiq) have been refactored to use the new custom_injector. This includes: - Injector attachment mechanisms. - Injected, SyncInjected, InjectedTaskiq, and SyncInjectedTaskiq decorators. - Request scoping logic (RequestScope, RequestScopeFactory, InjectorMiddleware).
  • Testing:

    • Added comprehensive unit tests for the custom_injector core.
    • Updated existing integration tests for FastAPI (tests/test_injection.py, tests/test_request_scope.py) to be compatible with the new framework.
  • Dependency Management:

    • Removed alecthomas/injector from the project's dependencies in pyproject.toml.
  • Documentation:

    • Updated README.md to reflect the new DI system, its API (e.g., injector.bind() syntax, scope usage), and updated examples.

This change addresses the issue of using a deprecated library and aims to provide a more stable and maintainable foundation for dependency injection within the fastapi-injector project, with particular attention to reliable singleton instance management.

Replaces the deprecated `alecthomas/injector` library with a new, custom-built dependency injection framework named `custom_injector`.

Key changes and features include:

- **New Core DI Framework (`custom_injector`):**
    - Supports class, factory, and value providers.
    - Implements robust Transient and Singleton scopes.
    - Provides automatic constructor injection based on type hints.
    - Includes basic circular dependency detection.

- **Updated Integrations:**
    - All `fastapi_injector` components (for both FastAPI and Taskiq) have been refactored to use the new `custom_injector`. This includes:
        - Injector attachment mechanisms.
        - `Injected`, `SyncInjected`, `InjectedTaskiq`, and `SyncInjectedTaskiq` decorators.
        - Request scoping logic (`RequestScope`, `RequestScopeFactory`, `InjectorMiddleware`).

- **Testing:**
    - Added comprehensive unit tests for the `custom_injector` core.
    - Updated existing integration tests for FastAPI (`tests/test_injection.py`, `tests/test_request_scope.py`) to be compatible with the new framework.

- **Dependency Management:**
    - Removed `alecthomas/injector` from the project's dependencies in `pyproject.toml`.

- **Documentation:**
    - Updated `README.md` to reflect the new DI system, its API (e.g., `injector.bind()` syntax, scope usage), and updated examples.

This change addresses the issue of using a deprecated library and aims to provide a more stable and maintainable foundation for dependency injection within the `fastapi-injector` project, with particular attention to reliable singleton instance management.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant