Firebase Remote Config SDK
Project description
Firebase Remote Config SDK for Python
A Python SDK for managing Firebase Remote Config, built as a typed abstraction over the Firebase REST API. This package provides a convenient way to get, validate, update and upload remote config templates.
Features
- Provides SDK for managing Remote Config for mobile clients that is missing from Google
firebase-adminpackage - Type-safe interface using Pydantic models
- Minimal DSL for building and manipulating condition expressions
- Enables parsing condition expressions into Pydantic models
Capabilities
- Fetch and update Remote Config templates
- Validate template updates before deployment
- List template versions and perform rollbacks
- Add, query, and update conditions and parameters
- Serialize and parse condition expressions to/from structured form
Installation
pip install firebase-remote-config
Requirements
- Python 3.9 or higher
- Firebase project with Remote Config enabled
- Service account credentials with necessary permissions (Firebase Admin / Firebase Remote Config Admin)
Usage
Getting Started
First, initialize the client with your Firebase credentials:
from google.oauth2 import service_account
from firebase_remote_config import RemoteConfigClient
# Initialize the client
credentials = service_account.Credentials.from_service_account_file('path/to/service-account.json')
client = RemoteConfigClient(credentials, 'your-project-id')
# Get current Remote Config template
config = client.get_remote_config()
# Upload template to Firebase Remote Config
updated_config = client.update_remote_config(config)
Use Cases
1. Creating and Updating Parameters
import firebase_remote_config as rc
# Add new parameter to the remote config template
new_param = rc.RemoteConfigParameter(
defaultValue=rc.RemoteConfigParameterValue(value="default_value"),
valueType=rc.ParameterValueType.STRING,
description="A new parameter"
)
config.template.parameters["new_parameter"] = new_param
# find parameter in the template
param = config.find_param_by_key("new_parameter")
param.description = "My new parameter"
2. Working with Conditional Values
import firebase_remote_config as rc
# Create condition object
condition = rc.RemoteConfigCondition(
name="ios_users",
expression="device.os == 'ios'",
tagColor=rc.TagColor.BLUE,
)
# Insert condition to rconfig template
config.insert_condition(condition)
# Use newly created condition in a conditional value
config.set_conditional_value(
param_key="my_parameter",
param_value=rc.RemoteConfigParameterValue(value="my_value"),
param_value_type=rc.ParameterValueType.STRING,
condition_name="ios_users",
)
3. Building Complex Conditions with ConditionBuilder
import firebase_remote_config as rc
from firebase_remote_config.conditions import ConditionBuilder
# Create a complex condition
builder = ConditionBuilder()
builder.CONDITION().APP_VERSION().GTE("1.2.0")
builder.CONDITION().APP_USER_PROPERTY("total_purchases_usd").GTE(5)
builder.CONDITION().DEVICE_COUNTRY().IN(["US", "CA"])
cond_expr = builder.build()
# Serialize condition as string
cond_expr_str = str(cond_expr)
# app.version.>=(['1.2.0']) && app.userProperty['total_purchases_usd'] >= 5 && device.country in ['US', 'CA']
# Insert condition to remote config template
config.insert_condition(rc.RemoteConfigCondition(
name="active_premium_users",
expression=cond_expr_str,
tagColor=rc.TagColor.GREEN,
))
4. Parsing condition expression
from firebase_remote_config.conditions import ConditionParser
# Parse condition expression
parser = ConditionParser()
cond_expr = "dateTime >= dateTime('2025-01-01T09:00:00') && app.userProperty['my_property'].contains(['abc', 'def'])"
condition = parser.parse(cond_expr)
# Compare string representations of the condition to the original expression
print(str(condition) == cond_expr)
# True
5. Version Management
# List recent versions
versions, _ = client.list_versions(page_size=30)
# Rollback to a previous version
rolled_back_config = client.rollback(version_number="42")
License
This project is licensed under the terms of the LICENSE file in the root of this repository.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
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 firebase_remote_config-0.1.12.tar.gz.
File metadata
- Download URL: firebase_remote_config-0.1.12.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58a9786865387f841a3ef46eb07b5e3417fb5b6a6afd74cea0cfffbf350c248e
|
|
| MD5 |
10eeff03d2952be0c51bc51465693ba5
|
|
| BLAKE2b-256 |
02070f8bc53ea9854ddee672a9c5662c49f789bad5324b1961f230de4f451d0f
|
Provenance
The following attestation bundles were made for firebase_remote_config-0.1.12.tar.gz:
Publisher:
publish.yml on apprevenew-com/firebase-remote-config-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firebase_remote_config-0.1.12.tar.gz -
Subject digest:
58a9786865387f841a3ef46eb07b5e3417fb5b6a6afd74cea0cfffbf350c248e - Sigstore transparency entry: 195132903
- Sigstore integration time:
-
Permalink:
apprevenew-com/firebase-remote-config-python@ffe122806051e7c42438a37594a3035ba72bd629 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/apprevenew-com
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ffe122806051e7c42438a37594a3035ba72bd629 -
Trigger Event:
push
-
Statement type:
File details
Details for the file firebase_remote_config-0.1.12-py3-none-any.whl.
File metadata
- Download URL: firebase_remote_config-0.1.12-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3815d120b1f1a51a2d6b9da4cdcdeabb9d0678c38d483dce0eef8f405c793522
|
|
| MD5 |
b30357705a9889dbfd4fadc23a729dae
|
|
| BLAKE2b-256 |
46607d4dcf6558a67e4cc937b3e35b01e2f89afca5dd9604d3f645cb00cc9bc7
|
Provenance
The following attestation bundles were made for firebase_remote_config-0.1.12-py3-none-any.whl:
Publisher:
publish.yml on apprevenew-com/firebase-remote-config-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firebase_remote_config-0.1.12-py3-none-any.whl -
Subject digest:
3815d120b1f1a51a2d6b9da4cdcdeabb9d0678c38d483dce0eef8f405c793522 - Sigstore transparency entry: 195132906
- Sigstore integration time:
-
Permalink:
apprevenew-com/firebase-remote-config-python@ffe122806051e7c42438a37594a3035ba72bd629 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/apprevenew-com
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ffe122806051e7c42438a37594a3035ba72bd629 -
Trigger Event:
push
-
Statement type: