A project to integrate Google Ads API with MongoDB session management
Project description
ADK MongoDB Session Service
A session management library for the Google ADK framework that uses MongoDB as a backend.
This package provides a MongodbSessionService that implements the google.adk.sessions.base_session_service.BaseSessionService abstract base class. It allows you to store and manage session state in a MongoDB database, fully replicating the three-tiered state management (app, user, and session) found in the core ADK session services.
Features
- MongoDB Backend: Persist session and state data in a MongoDB database.
- Tiered State Management: Automatically manage state at the application, user, and session levels.
- ADK Integration: Implements the
BaseSessionServicefor seamless integration with the Google ADK framework. - Async Support: All service methods are asynchronous.
Installation
You can install the package from PyPI:
pip install adk-mongodb-session
For development, clone the repository and install it in editable mode with the testing dependencies:
git clone https://github.com/your-username/adk-mongodb-session.git
cd adk-mongodb-session
pip install -e ".[test]"
Usage
First, instantiate the MongodbSessionService with your MongoDB connection details.
import asyncio
from adk.mongodb.sessions import MongodbSessionService
# Initialize the service
session_service = MongodbSessionService(
db_url="mongodb://localhost:27017/",
database="my_adk_app",
collection_prefix="sessions" # This will create sessions_sessions, sessions_app_states, etc.
)
async def main():
# Use the service to create, retrieve, and manage sessions
new_session = await session_service.create_session(
app_name="my_app",
user_id="user_123",
)
print(f"Created session with ID: {new_session.id}")
if __name__ == "__main__":
asyncio.run(main())
Tiered State Management
The service automatically handles the three-tiered state. When you create a session, you can provide state keys with the prefixes app: and user: to store data at the corresponding level. This state is automatically merged and made available in the session.state attribute.
import asyncio
from google.adk.sessions.state import State
# ... (service initialization)
async def main():
# Create a session with tiered state
session = await session_service.create_session(
app_name="my_app",
user_id="user_123",
state={
f"{State.APP_PREFIX}theme": "dark",
f"{State.USER_PREFIX}language": "en",
"session_specific_data": "foo"
}
)
# The session object will have a merged view of the state
print(session.state)
# Expected output:
# {
# 'app:theme': 'dark',
# 'user:language': 'en',
* 'session_specific_data': 'foo'
# }
# Retrieve the session later
retrieved_session = await session_service.get_session(
app_name="my_app",
user_id="user_id_123",
session_id=session.id
)
print(retrieved_session.state) # Will also contain the merged state
if __name__ == "__main__":
asyncio.run(main())
Running Tests
To run the tests, first install the testing dependencies:
pip install -e ".[test]"
Then, run the tests using unittest:
python -m unittest discover tests
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md file for details on how to report bugs, suggest enhancements, and submit pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adk_mongodb_session-1.0.1.tar.gz.
File metadata
- Download URL: adk_mongodb_session-1.0.1.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c6ee3cb0c9bcd66af98fb8a615b3e055849ebf8abc7b08c3746c4c25f3f7da9
|
|
| MD5 |
0f47d68390348fa90c4b46c71168e9ab
|
|
| BLAKE2b-256 |
25966f71c277e50c59a2fcf641fbc1e461ab07ac3226b337f42c4ecc9e602845
|
Provenance
The following attestation bundles were made for adk_mongodb_session-1.0.1.tar.gz:
Publisher:
publish-to-pypi.yml on SergeySetti/adk-mongodb-session
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adk_mongodb_session-1.0.1.tar.gz -
Subject digest:
3c6ee3cb0c9bcd66af98fb8a615b3e055849ebf8abc7b08c3746c4c25f3f7da9 - Sigstore transparency entry: 597867139
- Sigstore integration time:
-
Permalink:
SergeySetti/adk-mongodb-session@690c894cf728bbd8f09389381c2e00a4ea131ca3 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/SergeySetti
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@690c894cf728bbd8f09389381c2e00a4ea131ca3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file adk_mongodb_session-1.0.1-py3-none-any.whl.
File metadata
- Download URL: adk_mongodb_session-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d78c99ffce23da2ce40845c98e844d8351118c9aca68b78c9b601379dea2dc1a
|
|
| MD5 |
c0de45921425ece744754582a24118b7
|
|
| BLAKE2b-256 |
4d9c55dc923f5d6b9116bd233f439cb1a05f68dea9109caa530a9136c5be1f1e
|
Provenance
The following attestation bundles were made for adk_mongodb_session-1.0.1-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on SergeySetti/adk-mongodb-session
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adk_mongodb_session-1.0.1-py3-none-any.whl -
Subject digest:
d78c99ffce23da2ce40845c98e844d8351118c9aca68b78c9b601379dea2dc1a - Sigstore transparency entry: 597867141
- Sigstore integration time:
-
Permalink:
SergeySetti/adk-mongodb-session@690c894cf728bbd8f09389381c2e00a4ea131ca3 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/SergeySetti
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@690c894cf728bbd8f09389381c2e00a4ea131ca3 -
Trigger Event:
release
-
Statement type: