{"id":21216,"library":"eppo-server-sdk","title":"Eppo Server-Side SDK","description":"Server-side Python SDK for Eppo's feature flagging and experimentation platform. Current version 4.4.1, requires Python >=3.8. Follows semantic versioning; minor releases may introduce breaking changes.","status":"active","version":"4.4.1","language":"python","source_language":"en","source_url":"https://github.com/Eppo-exp/py-sdk","tags":["feature-flags","ab-testing","experimentation"],"install":[{"cmd":"pip install eppo-server-sdk","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"HTTP client for API calls","package":"requests","optional":false}],"imports":[{"note":"Incorrect module path","wrong":"from eppo import EppoClient","symbol":"EppoClient","correct":"from eppo_client import EppoClient"}],"quickstart":{"code":"from eppo_client import EppoClient, Configuration\n\nclient = EppoClient(\n    Configuration(\n        api_key=os.environ.get('EPPO_API_KEY', '')\n    )\n)\nassignment = client.get_assignment(\n    subject_key='user-1',\n    flag_key='my-flag',\n    subject_attributes={'age': 30}\n)\nprint(assignment)","lang":"python","description":"Initialize EppoClient with API key and get a flag assignment."},"warnings":[{"fix":"Use EppoClient(Configuration(api_key='...')).","message":"In v4.0.0, the constructor changed from positional arguments to a Configuration object. Old code using EppoClient(api_key='...') will fail.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Use get_assignment with expected_variant or check assignment value manually.","message":"v4.0.0 removed synchronous methods; get_assignment is now the only method. Methods like get_boolean_assignment no longer exist.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Create separate client instances per thread or use a thread-safe wrapper.","message":"The client is not thread-safe. Do not share a single EppoClient instance across threads without external locking.","severity":"gotcha","affected_versions":"all"},{"fix":"Set cache_ttl_seconds in Configuration to control refresh interval.","message":"Configuration caching may cause stale flag evaluations if not configured properly. Default cache TTL is 300 seconds.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Wrap api_key in Configuration: EppoClient(Configuration(api_key='...'))","cause":"Using old positional argument pattern with new Configuration-based constructor.","error":"TypeError: __init__() got an unexpected keyword argument 'api_key'"},{"fix":"Use client.get_assignment() and compare result to expected variant string.","cause":"Method removed in v4.0.0.","error":"AttributeError: 'EppoClient' object has no attribute 'get_boolean_assignment'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}