Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-posthog for openSUSE:Factory checked in at 2026-02-20 17:44:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-posthog (Old) and /work/SRC/openSUSE:Factory/.python-posthog.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-posthog" Fri Feb 20 17:44:11 2026 rev:4 rq:1334091 version:7.9.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-posthog/python-posthog.changes 2024-10-09 22:13:06.478656668 +0200 +++ /work/SRC/openSUSE:Factory/.python-posthog.new.1977/python-posthog.changes 2026-02-20 17:52:34.544413931 +0100 @@ -1,0 +2,67 @@ +Fri Feb 20 01:13:24 UTC 2026 - Steve Kowalik <[email protected]> + +- Update to 7.9.3: + * fix(llma): make prompt fetches deterministic by requiring project_api_key + and sending it as token query param + * feat: Support device_id as bucketing identifier for local evaluation + * fix: limit collections scanning in code variables + * fix: openAI input image sanitization + * fix: avoid return from finally block to fix Python 3.14 SyntaxWarning + * feat: Add automatic retries for feature flag requests + * Add support for the async version of Gemini. + * Add support for Python 3.14. Python 3.9 is no longer supported. + * feat(llma): send web search calls to be used for LLM cost calculations + * fix(django): Handle request.user access in async middleware context to + prevent SynchronousOnlyOperation errors in Django 5+ + * fix(django): Restore process_exception method to capture view and + downstream middleware exceptions + * feat: Django middleware now supports async request handling. + * feat: Add support for feature flag dependencies + * fix: correctly capture exceptions processed by Django from views or + middleware + * feat: add a feature flag evaluation cache (local storage or redis) + * feat: Add `setup()` function to initialise default client + * Add context management. + * Add support for google gemini + * Moved ai openai package to a composition approach over inheritance. + * Remove deprecated monotonic library. + * Added new method get_feature_flag_result. + * Roll out new `/flags` endpoint to 100% of `/decide` traffic. + * Fix hash inclusion/exclusion for flag rollout + * Roll out new /flags endpoint to 10% of /decide traffic + * Add `log_captured_exceptions` option to proxy setup + * Add config option to `log_captured_exceptions` + * Add more information to `$feature_flag_called` events. + * Support serializing dataclasses. + * Add support for tool calls in OpenAI and Anthropic. + * Improve quota-limited feature flag logs + * Add support for Azure OpenAI. + * The LangChain handler now captures tools in `$ai_generation` events, in + property `$ai_tools`. + * Fix async client support for OpenAI. + * Support quota-limited feature flags + * Evaluate feature flag payloads with case sensitivity correctly. + * Add support for Bedrock Anthropic Usage + * Automatically retry connection errors + * Add support for OpenAI beta parse API. + * Fix LangChain callback handler to capture parent run ID. + * Add the `$ai_span` event to the LangChain callback handler to capture the + input and output of intermediary chains. + * Fix serialiazation of Pydantic models in methods. + * Add `$ai_error` and `$ai_is_error` properties to LangChain callback + handler, OpenAI, and Anthropic. + * Fix capturing of multiple traces in the LangChain callback handler. + * Fix importing of LangChain callback handler under certain circumstances. + * Add `$ai_trace` event emission to LangChain callback handler. + * Add LLM Observability with support for OpenAI and Langchain callbacks. + * Adds a new `super_properties` parameter on the client that are appended + to every /capture call. + * Fix manual capture support for in app frames + * Fix django integration support for manual exception capture. +- Drop patches: + * python-posthog-no-mock.patch + * python-posthog-no-six.patch + * no-more-monotonic.patch +- Add patch remove-mock-and-six.patch, which is the first two dropped patches. + +------------------------------------------------------------------- Old: ---- no-more-monotonic.patch posthog-3.6.0.tar.gz python-posthog-no-mock.patch python-posthog-no-six.patch New: ---- posthog-7.9.3.tar.gz remove-mock-and-six.patch ----------(Old B)---------- Old: * python-posthog-no-six.patch * no-more-monotonic.patch - Add patch remove-mock-and-six.patch, which is the first two dropped patches. Old:- Drop patches: * python-posthog-no-mock.patch * python-posthog-no-six.patch Old: * python-posthog-no-mock.patch * python-posthog-no-six.patch * no-more-monotonic.patch ----------(Old E)---------- ----------(New B)---------- New: * no-more-monotonic.patch - Add patch remove-mock-and-six.patch, which is the first two dropped patches. ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-posthog.spec ++++++ --- /var/tmp/diff_new_pack.gM0wZ9/_old 2026-02-20 17:52:35.600458170 +0100 +++ /var/tmp/diff_new_pack.gM0wZ9/_new 2026-02-20 17:52:35.604458337 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-posthog # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,15 +18,14 @@ %{?sle15_python_module_pythons} Name: python-posthog -Version: 3.6.0 +Version: 7.9.3 Release: 0 Summary: PostHog is developer-friendly, self-hosted product analytics License: MIT URL: https://github.com/posthog/posthog-python Source: https://files.pythonhosted.org/packages/source/p/posthog/posthog-%{version}.tar.gz -Patch1: python-posthog-no-mock.patch -Patch2: python-posthog-no-six.patch -Patch3: no-more-monotonic.patch +# PATCH-FIX-UPSTREAM Based on gh#PostHog/posthog-python#442 +Patch0: remove-mock-and-six.patch BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} @@ -34,15 +33,22 @@ # SECTION test requirements BuildRequires: %{python_module pytest} BuildRequires: %{python_module backoff >= 1.10.0} +BuildRequires: %{python_module distro >= 1.5} BuildRequires: %{python_module freezegun} +BuildRequires: %{python_module parameterized >= 0.8.1} +BuildRequires: %{python_module pydantic} BuildRequires: %{python_module pytest-timeout} +BuildRequires: %{python_module pytest} BuildRequires: %{python_module python-dateutil > 2.1} BuildRequires: %{python_module requests >= 2.7} +BuildRequires: %{python_module typing_extensions >= 4.2} # /SECTION BuildRequires: fdupes Requires: python-backoff >= 1.10.0 -Requires: python-python-dateutil > 2.1 +Requires: python-distro >= 1.5 +Requires: python-python-dateutil > 2.2 Requires: python-requests >= 2.7 +Requires: python-typing_extensions >= 4.2 Suggests: python-black Suggests: python-isort Suggests: python-flake8 ++++++ posthog-3.6.0.tar.gz -> posthog-7.9.3.tar.gz ++++++ ++++ 31335 lines of diff (skipped) ++++++ remove-mock-and-six.patch ++++++ >From a41965e2be0f6187c98b3725c45d3acae94f506f Mon Sep 17 00:00:00 2001 From: Steve Kowalik <[email protected]> Date: Thu, 19 Feb 2026 16:39:03 +1100 Subject: [PATCH] chore: remove use of six and mock mock has been in the standard library since Python 3.3, and six stopped being required when Python 2 support was dropped, so remove both of them. --- integration_tests/django5/uv.lock | 21 ++++++-------- posthog/client.py | 3 +- posthog/test/test_before_send.py | 3 +- posthog/test/test_client.py | 5 ++-- posthog/test/test_consumer.py | 2 +- posthog/test/test_feature_flag_result.py | 3 +- posthog/test/test_feature_flags.py | 2 +- posthog/test/test_request.py | 2 +- posthog/test/test_utils.py | 3 +- posthog/utils.py | 7 ++--- pyproject.toml | 4 --- uv.lock | 35 ------------------------ 12 files changed, 19 insertions(+), 71 deletions(-) Index: posthog-7.9.3/posthog/client.py =================================================================== --- posthog-7.9.3.orig/posthog/client.py +++ posthog-7.9.3/posthog/client.py @@ -8,7 +8,6 @@ from typing import Any, Dict, Optional, from uuid import uuid4 from dateutil.tz import tzutc -from six import string_types from typing_extensions import Unpack from posthog.args import ID_TYPES, ExceptionArg, OptionalCaptureArgs, OptionalSetArgs @@ -2339,6 +2338,6 @@ class Client(object): def stringify_id(val): if val is None: return None - if isinstance(val, string_types): + if isinstance(val, str): return val return str(val) Index: posthog-7.9.3/posthog/test/test_before_send.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_before_send.py +++ posthog-7.9.3/posthog/test/test_before_send.py @@ -1,6 +1,5 @@ import unittest - -import mock +from unittest import mock from posthog.client import Client from posthog.test.test_utils import FAKE_TEST_API_KEY Index: posthog-7.9.3/posthog/test/test_client.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_client.py +++ posthog-7.9.3/posthog/test/test_client.py @@ -3,8 +3,7 @@ import unittest from datetime import datetime from uuid import uuid4 -import mock -import six +from unittest import mock from parameterized import parameterized from posthog.client import Client @@ -1728,7 +1727,7 @@ class TestClient(unittest.TestCase): self.assertIsNone(msg_uuid) def test_unicode(self): - Client(six.u("unicode_key")) + Client("unicode_key") def test_numeric_distinct_id(self): self.client.capture("python event", distinct_id=1234) Index: posthog-7.9.3/posthog/test/test_consumer.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_consumer.py +++ posthog-7.9.3/posthog/test/test_consumer.py @@ -3,7 +3,7 @@ import time import unittest from typing import Any -import mock +from unittest import mock from parameterized import parameterized try: Index: posthog-7.9.3/posthog/test/test_feature_flag_result.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_feature_flag_result.py +++ posthog-7.9.3/posthog/test/test_feature_flag_result.py @@ -1,6 +1,5 @@ import unittest - -import mock +from unittest import mock from posthog.client import Client from posthog.test.test_utils import FAKE_TEST_API_KEY Index: posthog-7.9.3/posthog/test/test_feature_flags.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_feature_flags.py +++ posthog-7.9.3/posthog/test/test_feature_flags.py @@ -1,7 +1,7 @@ import datetime import unittest -import mock +from unittest import mock from dateutil import parser, tz from freezegun import freeze_time Index: posthog-7.9.3/posthog/test/test_request.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_request.py +++ posthog-7.9.3/posthog/test/test_request.py @@ -1,8 +1,8 @@ import json import unittest from datetime import date, datetime +from unittest import mock -import mock import pytest import requests Index: posthog-7.9.3/posthog/test/test_utils.py =================================================================== --- posthog-7.9.3.orig/posthog/test/test_utils.py +++ posthog-7.9.3/posthog/test/test_utils.py @@ -7,7 +7,6 @@ from decimal import Decimal from typing import Optional from uuid import UUID -import six from dateutil.tz import tzutc from parameterized import parameterized from pydantic import BaseModel @@ -48,7 +47,7 @@ class TestUtils(unittest.TestCase): def test_clean(self): simple = { "decimal": Decimal("0.142857"), - "unicode": six.u("woo"), + "unicode": "woo", "date": datetime.now(), "long": 200000000, "integer": 1, Index: posthog-7.9.3/posthog/utils.py =================================================================== --- posthog-7.9.3.orig/posthog/utils.py +++ posthog-7.9.3/posthog/utils.py @@ -13,7 +13,6 @@ import sys import platform import distro # For Linux OS detection -import six from dateutil.tz import tzlocal, tzutc log = logging.getLogger("posthog") @@ -58,9 +57,7 @@ def clean(item): return float(item) if isinstance(item, UUID): return str(item) - if isinstance( - item, (six.string_types, bool, numbers.Number, datetime, date, type(None)) - ): + if isinstance(item, (str, bool, numbers.Number, datetime, date, type(None))): return item if isinstance(item, (set, list, tuple)): return _clean_list(item) @@ -88,7 +85,7 @@ def _clean_list(list_): def _clean_dict(dict_): data = {} - for k, v in six.iteritems(dict_): + for k, v in dict_.items(): try: data[k] = clean(v) except TypeError: Index: posthog-7.9.3/pyproject.toml =================================================================== --- posthog-7.9.3.orig/pyproject.toml +++ posthog-7.9.3/pyproject.toml @@ -25,7 +25,6 @@ classifiers = [ ] dependencies = [ "requests>=2.7,<3.0", - "six>=1.5", "python-dateutil>=2.2", "backoff>=1.10.0", "distro>=1.5.0", @@ -43,11 +42,9 @@ dev = [ "lxml", "mypy", "mypy-baseline", - "types-mock", "types-python-dateutil", "types-requests", "types-setuptools", - "types-six", "pre-commit", "pydantic", "ruff", @@ -59,7 +56,6 @@ dev = [ "tomli_w", ] test = [ - "mock>=2.0.0", "freezegun==1.5.1", "coverage", "pytest",
