diff --git a/integration_tests/django5/uv.lock b/integration_tests/django5/uv.lock index 45cbb261..2e4640d5 100644 --- a/integration_tests/django5/uv.lock +++ b/integration_tests/django5/uv.lock @@ -254,7 +254,6 @@ dependencies = [ { name = "distro" }, { name = "python-dateutil" }, { name = "requests" }, - { name = "six" }, { name = "typing-extensions" }, ] @@ -275,7 +274,6 @@ requires-dist = [ { name = "langchain-openai", marker = "extra == 'test'", specifier = ">=0.3.22" }, { name = "langgraph", marker = "extra == 'test'", specifier = ">=0.4.8" }, { name = "lxml", marker = "extra == 'dev'" }, - { name = "mock", marker = "extra == 'test'", specifier = ">=2.0.0" }, { name = "mypy", marker = "extra == 'dev'" }, { name = "mypy-baseline", marker = "extra == 'dev'" }, { name = "openai", marker = "extra == 'test'" }, @@ -291,15 +289,12 @@ requires-dist = [ { name = "requests", specifier = ">=2.7,<3.0" }, { name = "ruff", marker = "extra == 'dev'" }, { name = "setuptools", marker = "extra == 'dev'" }, - { name = "six", specifier = ">=1.5" }, { name = "tomli", marker = "extra == 'dev'" }, { name = "tomli-w", marker = "extra == 'dev'" }, { name = "twine", marker = "extra == 'dev'" }, - { name = "types-mock", marker = "extra == 'dev'" }, { name = "types-python-dateutil", marker = "extra == 'dev'" }, { name = "types-requests", marker = "extra == 'dev'" }, { name = "types-setuptools", marker = "extra == 'dev'" }, - { name = "types-six", marker = "extra == 'dev'" }, { name = "typing-extensions", specifier = ">=4.2.0" }, { name = "wheel", marker = "extra == 'dev'" }, ] diff --git a/mypy-baseline.txt b/mypy-baseline.txt index 46d23dbf..000341d1 100644 --- a/mypy-baseline.txt +++ b/mypy-baseline.txt @@ -1,6 +1,4 @@ -posthog/utils.py:0: error: Library stubs not installed for "six" [import-untyped] posthog/utils.py:0: error: Library stubs not installed for "dateutil.tz" [import-untyped] -posthog/utils.py:0: error: Statement is unreachable [unreachable] posthog/request.py:0: error: Library stubs not installed for "requests" [import-untyped] posthog/request.py:0: note: Hint: "python3 -m pip install types-requests" posthog/request.py:0: error: Library stubs not installed for "dateutil.tz" [import-untyped] @@ -18,8 +16,6 @@ posthog/client.py:0: error: Library stubs not installed for "dateutil.tz" [impo posthog/client.py:0: note: Hint: "python3 -m pip install types-python-dateutil" posthog/client.py:0: note: (or run "mypy --install-types" to install all missing stub packages) posthog/client.py:0: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports -posthog/client.py:0: error: Library stubs not installed for "six" [import-untyped] -posthog/client.py:0: note: Hint: "python3 -m pip install types-six" posthog/client.py:0: error: Name "queue" already defined (by an import) [no-redef] posthog/client.py:0: error: Need type annotation for "queue" [var-annotated] posthog/client.py:0: error: Incompatible types in assignment (expression has type "Any | list[Any]", variable has type "None") [assignment] diff --git a/posthog/client.py b/posthog/client.py index 62cca425..9672d9e4 100644 --- a/posthog/client.py +++ b/posthog/client.py @@ -8,7 +8,6 @@ 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 @@ -2348,6 +2347,6 @@ def _add_local_person_and_group_properties( def stringify_id(val): if val is None: return None - if isinstance(val, string_types): + if isinstance(val, str): return val return str(val) diff --git a/posthog/test/test_before_send.py b/posthog/test/test_before_send.py index 8411bf9a..a38541fa 100644 --- a/posthog/test/test_before_send.py +++ b/posthog/test/test_before_send.py @@ -1,7 +1,7 @@ import importlib import unittest +from unittest import mock -import mock import posthog from posthog.client import Client diff --git a/posthog/test/test_client.py b/posthog/test/test_client.py index b0bd9c47..9cbc206c 100644 --- a/posthog/test/test_client.py +++ b/posthog/test/test_client.py @@ -3,8 +3,7 @@ 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 @@ def test_overflow(self): 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) diff --git a/posthog/test/test_consumer.py b/posthog/test/test_consumer.py index a832aa28..e032e813 100644 --- a/posthog/test/test_consumer.py +++ b/posthog/test/test_consumer.py @@ -3,7 +3,7 @@ import unittest from typing import Any -import mock +from unittest import mock from parameterized import parameterized try: diff --git a/posthog/test/test_feature_flag_result.py b/posthog/test/test_feature_flag_result.py index 7de428c6..5eebc4f6 100644 --- a/posthog/test/test_feature_flag_result.py +++ b/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 diff --git a/posthog/test/test_feature_flags.py b/posthog/test/test_feature_flags.py index 92c6f1f3..2e7168ed 100644 --- a/posthog/test/test_feature_flags.py +++ b/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 diff --git a/posthog/test/test_request.py b/posthog/test/test_request.py index 39ca82bf..c87af36b 100644 --- a/posthog/test/test_request.py +++ b/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 diff --git a/posthog/test/test_utils.py b/posthog/test/test_utils.py index 6474c519..b6907be1 100644 --- a/posthog/test/test_utils.py +++ b/posthog/test/test_utils.py @@ -7,7 +7,6 @@ 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 @@ def test_timezone_utils(self): def test_clean(self): simple = { "decimal": Decimal("0.142857"), - "unicode": six.u("woo"), + "unicode": "woo", "date": datetime.now(), "long": 200000000, "integer": 1, diff --git a/posthog/utils.py b/posthog/utils.py index 99b494dc..d1dbc7ea 100644 --- a/posthog/utils.py +++ b/posthog/utils.py @@ -13,7 +13,6 @@ 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: diff --git a/pyproject.toml b/pyproject.toml index 050f5a21..582999b0 100644 --- a/pyproject.toml +++ b/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", @@ -47,11 +46,9 @@ dev = [ "lxml", "mypy", "mypy-baseline", - "types-mock", "types-python-dateutil", "types-requests", "types-setuptools", - "types-six", "pre-commit", "pydantic>=2.12.0", "ruff", @@ -63,7 +60,6 @@ dev = [ "tomli_w", ] test = [ - "mock>=2.0.0", "freezegun==1.5.1", "coverage", "pytest", diff --git a/uv.lock b/uv.lock index fdcf6e3e..d9d1d378 100644 --- a/uv.lock +++ b/uv.lock @@ -1417,15 +1417,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] -[[package]] -name = "mock" -version = "5.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/8c/14c2ae915e5f9dca5a22edd68b35be94400719ccfa068a03e0fb63d0f6f6/mock-5.2.0.tar.gz", hash = "sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0", size = 92796, upload-time = "2025-03-03T12:31:42.911Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1d468e0d58c3997b1dc219a9a9202e650d30c2fc85d481/mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f", size = 31617, upload-time = "2025-03-03T12:31:41.518Z" }, -] - [[package]] name = "more-itertools" version = "10.7.0" @@ -2053,7 +2044,6 @@ dependencies = [ { name = "distro" }, { name = "python-dateutil" }, { name = "requests" }, - { name = "six" }, { name = "typing-extensions" }, ] @@ -2071,11 +2061,9 @@ dev = [ { name = "tomli" }, { name = "tomli-w" }, { name = "twine" }, - { name = "types-mock" }, { name = "types-python-dateutil" }, { name = "types-requests" }, { name = "types-setuptools" }, - { name = "types-six" }, { name = "wheel" }, ] langchain = [ @@ -2098,7 +2086,6 @@ test = [ { name = "langchain-openai" }, { name = "langgraph" }, { name = "langgraph-checkpoint" }, - { name = "mock" }, { name = "openai" }, { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "opentelemetry-sdk" }, @@ -2134,7 +2121,6 @@ requires-dist = [ { name = "langgraph", marker = "extra == 'test'", specifier = ">=1.0" }, { name = "langgraph-checkpoint", marker = "extra == 'test'", specifier = ">=3.0.1" }, { name = "lxml", marker = "extra == 'dev'" }, - { name = "mock", marker = "extra == 'test'", specifier = ">=2.0.0" }, { name = "mypy", marker = "extra == 'dev'" }, { name = "mypy-baseline", marker = "extra == 'dev'" }, { name = "openai", marker = "extra == 'test'", specifier = ">=2.0" }, @@ -2154,16 +2140,13 @@ requires-dist = [ { name = "requests", specifier = ">=2.7,<3.0" }, { name = "ruff", marker = "extra == 'dev'" }, { name = "setuptools", marker = "extra == 'dev'" }, - { name = "six", specifier = ">=1.5" }, { name = "tiktoken", marker = "extra == 'test'", specifier = ">=0.12.0" }, { name = "tomli", marker = "extra == 'dev'" }, { name = "tomli-w", marker = "extra == 'dev'" }, { name = "twine", marker = "extra == 'dev'" }, - { name = "types-mock", marker = "extra == 'dev'" }, { name = "types-python-dateutil", marker = "extra == 'dev'" }, { name = "types-requests", marker = "extra == 'dev'" }, { name = "types-setuptools", marker = "extra == 'dev'" }, - { name = "types-six", marker = "extra == 'dev'" }, { name = "typing-extensions", specifier = ">=4.2.0" }, { name = "wheel", marker = "extra == 'dev'" }, ] @@ -3218,15 +3201,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7c/b6/74e927715a285743351233f33ea3c684528a0d374d2e43ff9ce9585b73fe/twine-6.1.0-py3-none-any.whl", hash = "sha256:a47f973caf122930bf0fbbf17f80b83bc1602c9ce393c7845f289a3001dc5384", size = 40791, upload-time = "2025-01-21T18:45:24.584Z" }, ] -[[package]] -name = "types-mock" -version = "5.2.0.20250516" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/17/20/7b9e8068bc2db2432389e40683f5d04c1901f72c150332f6749aa37bc5ef/types_mock-5.2.0.20250516.tar.gz", hash = "sha256:aab7d3d9ad3814f2f8da12cc8e42d9be7d38200c5f214e3c0278c38fa01299d7", size = 11220, upload-time = "2025-05-16T03:08:11.623Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/80/9e4a5f6dddb4ee046884e06ce6c80bc2266604e3452154a0e383a6f49414/types_mock-5.2.0.20250516-py3-none-any.whl", hash = "sha256:e50fbd0c3be8bcea25c30a47fac0b7a6ca22f630ef2f53416a73b319b39dfde1", size = 10516, upload-time = "2025-05-16T03:08:10.798Z" }, -] - [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" @@ -3266,15 +3240,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1b/d8/83790d67ec771bf029a45ff1bd1aedbb738d8aa58c09dd0cc3033eea0e69/types_setuptools-80.9.0.20250529-py3-none-any.whl", hash = "sha256:00dfcedd73e333a430e10db096e4d46af93faf9314f832f13b6bbe3d6757e95f", size = 63263, upload-time = "2025-05-29T03:07:33.064Z" }, ] -[[package]] -name = "types-six" -version = "1.17.0.20250515" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/78/344047eeced8d230140aa3d9503aa969acb61c6095e7308bbc1ff1de3865/types_six-1.17.0.20250515.tar.gz", hash = "sha256:f4f7f0398cb79304e88397336e642b15e96fbeacf5b96d7625da366b069d2d18", size = 15598, upload-time = "2025-05-15T03:04:19.806Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/85/5ee1c8e35b33b9c8ea1816d5a4e119c27f8bb1539b73b1f636f07aa64750/types_six-1.17.0.20250515-py3-none-any.whl", hash = "sha256:adfaa9568caf35e03d80ffa4ed765c33b282579c869b40bf4b6009c7d8db3fb1", size = 19987, upload-time = "2025-05-15T03:04:18.556Z" }, -] - [[package]] name = "typing-extensions" version = "4.14.1"