Install & Compatibility
Where this runs
tested against v8.11.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.10
✕ build_error
✓ 22.15s
py 3.11
✕ build_error
✓ 19.9s
py 3.12
✕ build_error
✓ 18s
py 3.13
✕ build_error
✕ build_error
py 3.9
✕ build_error
✓ 25.25s
359MB installed
● package 359MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
default_app_config
✓ from common import default_app_config
✗ import cfl
This quickstart demonstrates initializing the logger, configuring application settings using a dictionary (which can also be loaded from environment variables or .env files), and using a common utility function. It shows how to access configured values and basic logging practices.
import os
from cfl.logger import get_logger
from cfl.config import init_config, get_config_value
from cfl.common.utils import sanitize_filename
# Initialize a logger
logger = get_logger("my_app")
logger.info("Application started.")
# Initialize configuration (e.g., from .env or a dictionary)
# For a real application, you might load from a file or environment variables
config_dict = {
"APP_NAME": "MyCFLApp",
"API_KEY": os.environ.get("CFL_API_KEY", "default-api-key-for-dev")
}
init_config(config_dict=config_dict)
app_name = get_config_value("APP_NAME")
api_key = get_config_value("API_KEY")
logger.info(f"App Name from config: {app_name}")
logger.debug(f"API Key (for debug, not production logs): {api_key[:5]}...")
logger.warning(f"Sanitized filename example: {sanitize_filename('My File-1.0.txt')}")
logger.info("Application finished.")
Debug
Known issues
breakingSeveral utility functions that duplicated Python's standard library functionality (e.g., `json`, `datetime`, `re`, `urllib.parse`) were removed from `cfl.common.utils`.fixMigrate your code to use Python's built-in `json`, `datetime`, `re`, and `urllib.parse` modules directly. For example, replace `cfl.common.utils.json_load` with `json.loads`.
affects: 7.0.0, 8.0.0 and later
gotchaThe PyPI package name is `cfl-common`, but the top-level import name for the library is `cfl`.fixAlways use `import cfl` or `from cfl import ...` instead of `import cfl_common` when importing the library in your Python code.
affects: All versions
Upgrade
Version history
8.11.1latest on PyPI · released May 8, 2026
Audit
Dependencies
python-dotenvrequiredEnvironment variable loading
requestsrequiredHTTP client functionality
pydanticrequiredData validation and settings management
PyJWTrequiredJWT token handling
richrequiredRich terminal output and logging formatting
cryptographyrequiredCryptographic operations, often for security utilities
google-cloud-storageoptionalIntegration with Google Cloud Storage
pymongooptionalMongoDB database interaction
sqlalchemyoptionalSQL database ORM
psycopg2-binaryoptionalPostgreSQL adapter for SQLAlchemy