Skip to main content

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-admin package
  • 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
  • Google credentials with the necessary permissions (Firebase Admin / Firebase Remote Config Admin). Any Application Default Credentials work: a service account, workload identity, or local user credentials from gcloud auth application-default login.

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)

Authentication goes through google-auth's AuthorizedSession, so any Application Default Credentials work — including local user credentials:

import google.auth
from firebase_remote_config import RemoteConfigClient

# Resolve Application Default Credentials (service account, workload identity,
# or `gcloud auth application-default login`)
credentials, project_id = google.auth.default()
client = RemoteConfigClient(credentials, project_id)

The Remote Config REST API rejects user credentials that carry no quota project with 403 SERVICE_DISABLED. The client handles this by defaulting the quota project to project_id for user credentials; pass quota_project_id to bill a different project:

client = RemoteConfigClient(credentials, project_id, quota_project_id='billing-project')

The constructor also accepts a timeout (seconds, applied to every request; default 30). Pass timeout=None to disable it:

client = RemoteConfigClient(credentials, project_id, timeout=10)

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.get_parameter_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,
)

# Create condition in rconfig template
config.create_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']

# Create condition in remote config template
config.create_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
response = client.list_versions(page_size=30)
versions = response.versions

# 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firebase_remote_config-0.3.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firebase_remote_config-0.3.0-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file firebase_remote_config-0.3.0.tar.gz.

File metadata

  • Download URL: firebase_remote_config-0.3.0.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for firebase_remote_config-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e98dc769d1e9fc17c9b57d3fd263b96e39ebd7fdf4b14cbca5c8dda075edd558
MD5 35beccee8040e6d94842100647e4d450
BLAKE2b-256 4a3a425930b70548a0ca5d05fd2ff242662e1e50ee7e02536a346cdc5777f5ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for firebase_remote_config-0.3.0.tar.gz:

Publisher: publish.yml on apprevenew-com/firebase-remote-config-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file firebase_remote_config-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for firebase_remote_config-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 95c3408a544c1d1e4bef13d08d4fec463bd584687b68ed78a53618e3a5f50ab5
MD5 046c15f0cce8c66796f7ad2166c5ac3c
BLAKE2b-256 34549d126011adc95b43d3e95b3bd70d7b85c5c40f74c8c882d9239fa8f70de5

See more details on using hashes here.

Provenance

The following attestation bundles were made for firebase_remote_config-0.3.0-py3-none-any.whl:

Publisher: publish.yml on apprevenew-com/firebase-remote-config-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page