{"library":"statsig","title":"Statsig Python Server SDK","type":"library","description":"The Statsig Python Server SDK enables developers to integrate feature flags, A/B tests, and dynamic configurations into their Python applications. It provides server-side evaluation of gates and experiments, ensuring consistent user experiences. The library is actively maintained with frequent minor releases, currently at version 0.71.6.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install statsig"],"cli":null},"imports":["import statsig","from statsig import StatsigUser","from statsig import StatsigOptions"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"https://www.statsig.com","github":"https://github.com/statsig-io/python-sdk","docs":null,"changelog":null,"pypi":"https://pypi.org/project/statsig/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import statsig\nimport os\nimport asyncio\n\nasync def main():\n    # It is crucial to use a server secret key (sk-...) for the server SDK.\n    # NEVER expose client keys (pk-..., client-...) in your server-side code.\n    secret_key = os.environ.get('STATSIG_SERVER_SECRET', 'YOUR_SERVER_SECRET_KEY')\n\n    if not secret_key or secret_key == 'YOUR_SERVER_SECRET_KEY':\n        print(\"Please set the STATSIG_SERVER_SECRET environment variable or replace 'YOUR_SERVER_SECRET_KEY' in the code.\")\n        return\n\n    # Initialize the SDK. This is an asynchronous operation.\n    print(\"Initializing Statsig SDK...\")\n    await statsig.initialize(secret_key)\n    print(\"Statsig SDK initialized.\")\n\n    # Define a StatsigUser object with relevant attributes\n    user = statsig.StatsigUser(\n        user_id=\"example-user-123\",\n        email=\"user@example.com\",\n        country=\"US\",\n        custom={\n            \"plan\": \"premium\"\n        },\n        private_attributes={\n            \"phone_number\": \"+15551234567\"\n        }\n    )\n\n    # Check a feature gate\n    if statsig.check_gate(user, \"my_feature_gate\"):\n        print(\"Feature 'my_feature_gate' is ON for the user.\")\n    else:\n        print(\"Feature 'my_feature_gate' is OFF for the user.\")\n\n    # Get a dynamic config\n    config = statsig.get_config(user, \"my_dynamic_config\")\n    print(f\"Value for 'my_dynamic_config': {config.value}\")\n\n    # Get an experiment\n    experiment = statsig.get_experiment(user, \"my_a_b_test\")\n    print(f\"Value for 'my_a_b_test': {experiment.value}\")\n\n    # Log an event\n    statsig.log_event(user, \"product_viewed\", value=10.99, metadata={\"product_id\": \"item_xyz\"})\n\n    # Shut down the SDK. This is crucial for flushing all pending events.\n    print(\"Shutting down Statsig SDK...\")\n    await statsig.shutdown()\n    print(\"Statsig SDK shut down.\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())","lang":"python","description":"This quickstart demonstrates how to initialize the Statsig Python SDK, define a user, check a feature gate, retrieve a dynamic config, fetch an experiment, log an event, and properly shut down the SDK. Remember to replace `YOUR_SERVER_SECRET_KEY` with your actual server secret from the Statsig console, or set it via the `STATSIG_SERVER_SECRET` environment variable.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-20","installed_version":"0.71.6","pypi_latest":"0.71.6","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4,"avg_import_s":1.22,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.01,"mem_mb":16.5,"disk_size":"49.8M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":16.4,"disk_size":"49.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":0.63,"mem_mb":15.5,"disk_size":"49M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.91,"mem_mb":15.4,"disk_size":"49M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.44,"mem_mb":18.6,"disk_size":"53.0M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.71,"mem_mb":18.5,"disk_size":"52.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.94,"mem_mb":17.6,"disk_size":"52M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.19,"mem_mb":17.6,"disk_size":"52M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.61,"mem_mb":18.4,"disk_size":"44.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.66,"mem_mb":18.3,"disk_size":"44.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":1.23,"mem_mb":18.1,"disk_size":"44M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.8,"mem_mb":18.1,"disk_size":"44M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.52,"mem_mb":19.3,"disk_size":"44.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.72,"mem_mb":19.3,"disk_size":"44.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":1.18,"mem_mb":19.1,"disk_size":"44M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.55,"mem_mb":19,"disk_size":"43M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.87,"mem_mb":16.3,"disk_size":"49.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.95,"mem_mb":16.3,"disk_size":"49.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5,"import_time_s":0.75,"mem_mb":15.3,"disk_size":"48M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"statsig","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.8,"mem_mb":15.3,"disk_size":"48M"}]}}