{ lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder, rustPlatform, cargo, rustc, setuptools, setuptools-rust, libiconv, requests, regex, blobfile, }: let pname = "tiktoken"; version = "0.7.0"; src = fetchPypi { inherit pname version; hash = "sha256-EHcmbpScJOApH2w1BDPG8JcTZezisXOiO8O5+d7+9rY="; }; postPatch = '' cp ${./Cargo.lock} Cargo.lock ''; in buildPythonPackage { inherit pname version src postPatch ; pyproject = true; disabled = pythonOlder "3.8"; build-system = [ setuptools setuptools-rust ]; cargoDeps = rustPlatform.fetchCargoTarball { inherit src postPatch; name = "${pname}-${version}"; hash = "sha256-i0AQUu9ERDWBw0kjTTTyn4VHMig/k2/7wX2884MCGx8="; }; nativeBuildInputs = [ rustPlatform.cargoSetupHook setuptools-rust cargo rustc ]; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ]; dependencies = [ requests regex blobfile ]; # almost all tests require network access doCheck = false; pythonImportsCheck = [ "tiktoken" ]; meta = with lib; { description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models"; homepage = "https://github.com/openai/tiktoken"; license = licenses.mit; maintainers = with maintainers; [ happysalada ]; }; }