Metadata-Version: 2.4
Name: osdental-library
Version: 3.15
Summary: End-to-end algorithm library
Author: OSDental LLC
Author-email: support@osdental.ai
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: aiohttp==3.11.12
Requires-Dist: annotated-types==0.7.0
Requires-Dist: anyio==4.7.0
Requires-Dist: ariadne==0.26.2
Requires-Dist: azure-core==1.32.0
Requires-Dist: azure-servicebus==7.13.0
Requires-Dist: azure-storage-blob==12.24.0
Requires-Dist: azure-identity<2,>=1.24
Requires-Dist: azure-keyvault-secrets==4.10.0
Requires-Dist: certifi==2024.12.14
Requires-Dist: cffi==1.17.1
Requires-Dist: charset-normalizer==3.4.1
Requires-Dist: cryptography==44.0.0
Requires-Dist: fastapi==0.115.6
Requires-Dist: greenlet==3.1.1
Requires-Dist: h11==0.16.0
Requires-Dist: httpcore==1.0.9
Requires-Dist: httpx==0.28.1
Requires-Dist: idna==3.10
Requires-Dist: isodate==0.7.2
Requires-Dist: pycparser==2.22
Requires-Dist: pydantic==2.12.2
Requires-Dist: pydantic_core==2.41.4
Requires-Dist: PyJWT~=2.12.0
Requires-Dist: aioodbc==0.5.0
Requires-Dist: python-dotenv==1.0.1
Requires-Dist: pydantic_settings==2.13.1
Requires-Dist: requests==2.32.3
Requires-Dist: six==1.17.0
Requires-Dist: sniffio==1.3.1
Requires-Dist: SQLAlchemy==2.0.36
Requires-Dist: starlette==0.41.3
Requires-Dist: tenacity==9.1.2
Requires-Dist: typing_extensions==4.15.0
Requires-Dist: tzlocal==5.2
Requires-Dist: urllib3==2.3.0
Requires-Dist: redis<8,>=5
Requires-Dist: redis-entraid==1.1.2
Requires-Dist: colorlog==6.9.0
Requires-Dist: click==8.2.0
Requires-Dist: grpcio==1.75.0
Requires-Dist: grpcio-tools==1.75.0
Requires-Dist: grpcio-reflection==1.75.0
Requires-Dist: argon2-cffi==25.1.0
Requires-Dist: bcrypt==4.3.0
Requires-Dist: azure-monitor-opentelemetry==1.8.1
Requires-Dist: uvicorn==0.37.0
Requires-Dist: gunicorn==23.0.0
Requires-Dist: joserfc==1.5.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# osdental-library

`osdental-library` centralizes the core components and shared utilities of the ecosystem. Its goal is to ensure technical consistency, reduce code duplication, and accelerate delivery time for our digital products.

## What's new in v3.15

## Features
- Introduced **public** and **private decorators** to standardize request processing across services. These decorators provide centralized handling for request validation, responses, exception management, auditing, and authentication flows.
- Added helpers for working with **signed and encrypted JWE tokens**, simplifying secure token generation and validation.
- Added an **RSA Key Normalizer Helper** to standardize RSA key formats across different providers and environments.
- Implemented centralized **status code handling** for both **GraphQL** and **gRPC**, providing a consistent error model across transport layers.
- Added conditional logic to support dynamic client context resolution in the portal, based on the Super Admin’s selection. This enables multi-tenant data access without requiring re-authentication.
- Refactored the audit workflow to store audit data in Blob Storage. The storage reference is now published via Service Bus for asynchronous downstream processing.
- Updated the Redis cache implementation to utilize Azure Managed Identity for authentication, eliminating the need for static connection strings and improving security.
- Implemented automatic Database Token Renewal for SQL connections when using Azure Managed Identity, preventing authentication expiration during long-running processes.
- Added support for optional auditing, allowing services to selectively enable or disable audit processing depending on their business requirements.- 

## Breaking Changes (v3.15)
- Removed the database execution methods from the connection class.
- Removed internal gRPC connections. These must now be injected from the client microservice, providing greater flexibility and preventing circular dependencies.
- Removed classes that connected directly using `.env` configuration. Azure integrations have been restructured to fully support Dependency Injection.
- Temporarily removed the base project generation CLI commands while they are being adapted to the new library architecture.
- Refactored the audit queue by centralizing its processing into a single control point. Added support for decrypting final responses using AES and RSA algorithms.
- Removed the GraphQL `AuditExtension`. Its responsibilities are now handled by the new **public** and **private decorators**, which provide a unified mechanism for request processing, authentication, exception handling, responses, and auditing across the application.


## What's Next
- Migration plan for all base libraries to their most recent stable versions.
- Refinement of methods for hybrid environments that require switching between Managed Identity and Connection Strings depending on the environment.
- Continuous monitoring to resolve bugs and improve performance in the consumption of Azure resources.

We continue to work to deliver a superior development experience, ensuring our internal infrastructure is robust, secure and easy to deploy.

## Installation

You can easily install `osdental-library` using `pip`:

```bash
pip install osdental-library
