Intempt Python SDK
Copyright 2026 Intempt Technologies

This product includes software developed at Intempt Technologies.
Licensed under the Apache License, Version 2.0 (see LICENSE).

------------------------------------------------------------------------------
Third-party code
------------------------------------------------------------------------------

This product contains code derived from mixpanel-python:

    https://github.com/mixpanel/mixpanel-python
    Copyright Mixpanel, Inc.
    Licensed under the Apache License, Version 2.0.

Files containing derived code carry a header naming what was taken and what was
changed, as required by Apache License 2.0 section 4(b).

Derived, with modification
--------------------------

  src/intempt/_buffer.py
      The consumer/buffer split, the chunking of a large payload into several
      requests, and the retry-with-backoff loop follow mixpanel-python's
      BufferedConsumer and Consumer.

      Changed: the retry policy is Intempt's (413 halves the batch width and
      recovers by doubling, 429 honours Retry-After, a circuit breaker opens
      after five consecutive failures, and a close-initiated drain is bounded).
      Mixpanel retries on a fixed schedule with no width adaptation and no
      breaker.

  src/intempt/_transport.py
      Connection reuse across requests, and the request/response error mapping,
      follow mixpanel-python's Consumer.send.

      Changed: adds a per-request timeout, distinguishes retryable from
      non-retryable status codes, redacts credentials from every error surface,
      and never coerces a platform id numerically.

  src/intempt/_util.py
      ensure_timestamp() follows mixpanel-python's timestamp normalisation.
      chunk() follows the batching helper in mixpanel-python's BufferedConsumer.

      Changed: chunk() rejects a size below one rather than looping forever;
      ensure_timestamp() rejects non-finite input instead of coercing it.

Not derived
-----------

Everything else is original: the Intempt wire format, the identity model
(user_id and account_id only), consent, commerce, feed recommendations, the
opt-out gate, configuration handling and the whole test suite.

------------------------------------------------------------------------------

mixpanel-python vendors no NOTICE file of its own, so nothing further is
required under Apache License 2.0 section 4(d).
