diff --git a/api/pyproject.toml b/api/pyproject.toml index a1c2b0800606..129eaa85a3b7 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -76,7 +76,7 @@ dependencies = [ "hubspot-api-client>=12.0.0,<13.0.0", "djangorestframework-dataclasses>=1.3.1,<2.0.0", "pyotp>=2.9.0,<3.0.0", - "flagsmith-common[common-core,flagsmith-schemas,task-processor]>=3.12.1,<4", + "flagsmith-common[common-core,flagsmith-schemas,task-processor]>=3.13.0,<4", "django-stubs>=5.1.3,<6.0.0", "tzdata>=2024.1,<2025.0.0", "djangorestframework-simplejwt>=5.5.1,<6.0.0", diff --git a/api/uv.lock b/api/uv.lock index e961a2f4535c..7c7d96d0e918 100644 --- a/api/uv.lock +++ b/api/uv.lock @@ -1718,7 +1718,7 @@ requires-dist = [ { name = "email-validator", marker = "extra == 'dev'", specifier = ">=2.0.0" }, { name = "environs", specifier = ">=14.1.1,<15.0.0" }, { name = "flagsmith", specifier = ">=5.3.0,<6.0.0" }, - { name = "flagsmith-common", extras = ["common-core", "flagsmith-schemas", "task-processor"], specifier = ">=3.12.1,<4" }, + { name = "flagsmith-common", extras = ["common-core", "flagsmith-schemas", "task-processor"], specifier = ">=3.13.0,<4" }, { name = "flagsmith-common", extras = ["test-tools"], marker = "extra == 'dev'" }, { name = "flagsmith-flag-engine", specifier = ">=10.1.0,<11.0.0" }, { name = "flagsmith-private", marker = "extra == 'private'", specifier = ">=0.11.2,<1", index = "https://flagsmith-production-084060095745.d.codeartifact.eu-west-2.amazonaws.com/pypi/flagsmith-pypi-production/simple/" }, @@ -1791,11 +1791,11 @@ provides-extras = ["private", "dev"] [[package]] name = "flagsmith-common" -version = "3.12.1" +version = "3.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/95/d281ac745444cefbd14f2311f9879203c457e40edb24ea017c3af50b3a77/flagsmith_common-3.12.1.tar.gz", hash = "sha256:352bb77168d781754420075c0c8e57a27ad92f0459810cea4deeea263594e22a", size = 62044, upload-time = "2026-07-30T10:29:15.433Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/2d/6fe912b05394c4b61c59e3bdf55499b9d2bf90f63dfd8220d0535df3fd31/flagsmith_common-3.13.0.tar.gz", hash = "sha256:29359cedacfed3207a6b4882ca847476b6332e70d750735d13e9a97fdecdfbb6", size = 62082, upload-time = "2026-08-06T15:35:27.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/cb/476da683b30ad251e440cac74cb60967459436541b7f5ae87f707c8dd599/flagsmith_common-3.12.1-py3-none-any.whl", hash = "sha256:7274b80d91fd6040e03f5519942e7cba52cfa7e327ac0f10366dbe4ab71824c7", size = 100097, upload-time = "2026-07-30T10:29:14.031Z" }, + { url = "https://files.pythonhosted.org/packages/25/0b/46d9efab1fc8f5eb5e9c4f5fc151ac7c87b9b0c1985abc63f2aaecf7a95e/flagsmith_common-3.13.0-py3-none-any.whl", hash = "sha256:dee4ee5522241890faf1d1ba566b296e72aa62aa08143426171e6d793fe3e131", size = 100137, upload-time = "2026-08-06T15:35:25.725Z" }, ] [package.optional-dependencies] diff --git a/mcp/pyproject.toml b/mcp/pyproject.toml index 6f8a8cca693f..38074770f226 100644 --- a/mcp/pyproject.toml +++ b/mcp/pyproject.toml @@ -7,7 +7,7 @@ readme = "README.md" requires-python = ">=3.11" dependencies = [ "fastmcp>=3.3.1,<4.0.0", # Base MCP functionality - "flagsmith-common[otel]>=3.12.1,<4.0.0", # Logging and OTel export + "flagsmith-common[otel]>=3.13.0,<4.0.0", # Logging and OTel export "opentelemetry-instrumentation-httpx>=0.46b0,<1.0.0", # Trace upstream API calls "prometheus-client>=0.21.0,<1.0.0", # Export Prometheus metrics "pydantic-settings>=2.0.0,<3.0.0", # Environment-driven configuration @@ -19,7 +19,7 @@ flagsmith-mcp = "flagsmith_mcp.server:run" [dependency-groups] dev = [ - "flagsmith-common[test-tools]>=3.12.1,<4.0.0", # Shared test fixtures + "flagsmith-common[test-tools]>=3.13.0,<4.0.0", # Shared test fixtures "mypy>=2.1.0,<3.0.0", # Static type checking "openapi-pydantic>=0.5.0,<1.0.0", # Build OpenAPI specs as fixtures "pyfakefs>=6.0.0,<7.0.0", # Fake filesystem for the bundled schema diff --git a/mcp/uv.lock b/mcp/uv.lock index bb0a9706a530..828d3fb1de22 100644 --- a/mcp/uv.lock +++ b/mcp/uv.lock @@ -628,11 +628,11 @@ server = [ [[package]] name = "flagsmith-common" -version = "3.12.1" +version = "3.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/95/d281ac745444cefbd14f2311f9879203c457e40edb24ea017c3af50b3a77/flagsmith_common-3.12.1.tar.gz", hash = "sha256:352bb77168d781754420075c0c8e57a27ad92f0459810cea4deeea263594e22a", size = 62044, upload-time = "2026-07-30T10:29:15.433Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/2d/6fe912b05394c4b61c59e3bdf55499b9d2bf90f63dfd8220d0535df3fd31/flagsmith_common-3.13.0.tar.gz", hash = "sha256:29359cedacfed3207a6b4882ca847476b6332e70d750735d13e9a97fdecdfbb6", size = 62082, upload-time = "2026-08-06T15:35:27.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/cb/476da683b30ad251e440cac74cb60967459436541b7f5ae87f707c8dd599/flagsmith_common-3.12.1-py3-none-any.whl", hash = "sha256:7274b80d91fd6040e03f5519942e7cba52cfa7e327ac0f10366dbe4ab71824c7", size = 100097, upload-time = "2026-07-30T10:29:14.031Z" }, + { url = "https://files.pythonhosted.org/packages/25/0b/46d9efab1fc8f5eb5e9c4f5fc151ac7c87b9b0c1985abc63f2aaecf7a95e/flagsmith_common-3.13.0-py3-none-any.whl", hash = "sha256:dee4ee5522241890faf1d1ba566b296e72aa62aa08143426171e6d793fe3e131", size = 100137, upload-time = "2026-08-06T15:35:25.725Z" }, ] [package.optional-dependencies] @@ -682,7 +682,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "fastmcp", specifier = ">=3.3.1,<4.0.0" }, - { name = "flagsmith-common", extras = ["otel"], specifier = ">=3.12.1,<4.0.0" }, + { name = "flagsmith-common", extras = ["otel"], specifier = ">=3.13.0,<4.0.0" }, { name = "opentelemetry-instrumentation-httpx", specifier = ">=0.46b0,<1.0.0" }, { name = "prometheus-client", specifier = ">=0.21.0,<1.0.0" }, { name = "pydantic-settings", specifier = ">=2.0.0,<3.0.0" }, @@ -691,7 +691,7 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ - { name = "flagsmith-common", extras = ["test-tools"], specifier = ">=3.12.1,<4.0.0" }, + { name = "flagsmith-common", extras = ["test-tools"], specifier = ">=3.13.0,<4.0.0" }, { name = "mypy", specifier = ">=2.1.0,<3.0.0" }, { name = "openapi-pydantic", specifier = ">=0.5.0,<1.0.0" }, { name = "pyfakefs", specifier = ">=6.0.0,<7.0.0" }, @@ -836,7 +836,7 @@ name = "importlib-metadata" version = "9.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp", marker = "python_full_version < '3.13'" }, + { name = "zipp" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" } wheels = [ diff --git a/openapi.yaml b/openapi.yaml index ccfdf0f08579..ee846b180788 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -8571,6 +8571,12 @@ paths: - type: integer - type: boolean - type: string + variant: + type: string + nullable: true + reason: + type: string + nullable: true required: - enabled - feature @@ -8665,6 +8671,12 @@ paths: - type: integer - type: boolean - type: string + variant: + type: string + nullable: true + reason: + type: string + nullable: true required: - enabled - feature @@ -27867,6 +27879,16 @@ components: - type: string - type: 'null' title: Feature State Value + variant: + anyOf: + - type: string + - type: 'null' + title: Variant + reason: + anyOf: + - type: string + - type: 'null' + title: Reason required: - feature - enabled diff --git a/sdk/openapi.yaml b/sdk/openapi.yaml index 0c67801d259e..f64ae96c9d36 100644 --- a/sdk/openapi.yaml +++ b/sdk/openapi.yaml @@ -86,6 +86,12 @@ paths: - type: integer - type: boolean - type: string + variant: + type: string + nullable: true + reason: + type: string + nullable: true required: - enabled - feature @@ -539,6 +545,16 @@ components: - type: string - type: 'null' title: Feature State Value + variant: + anyOf: + - type: string + - type: 'null' + title: Variant + reason: + anyOf: + - type: string + - type: 'null' + title: Reason required: - feature - enabled