1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8
9 # dependencies
10 numpy,
11
12 # tests
13 asyncpg,
14 django,
15 peewee,
16 pg8000,
17 postgresql,
18 postgresqlTestHook,
19 psycopg-pool,
20 psycopg,
21 psycopg2,
22 pytest-asyncio,
23 pytestCheckHook,
24 scipy,
25 sqlalchemy,
26 sqlmodel,
27}:
28
29buildPythonPackage rec {
30 pname = "pgvector";
31 version = "0.4.1";
32 pyproject = true;
33
34 src = fetchFromGitHub {
35 owner = "pgvector";
36 repo = "pgvector-python";
37 tag = "v${version}";
38 hash = "sha256-QbNzEQctKgxdH1cpMmf2Yg05Q3KOT9tGtK4YSr9GiC4=";
39 };
40
41 build-system = [ setuptools ];
42
43 dependencies = [ numpy ];
44
45 # Temporarily disabled until the following is solved:
46 # https://github.com/NixOS/nixpkgs/pull/425384
47 doCheck = false;
48
49 nativeCheckInputs = [
50 asyncpg
51 django
52 peewee
53 pg8000
54 psycopg
55 psycopg.pool
56 psycopg2
57 psycopg-pool
58 (postgresql.withPackages (p: with p; [ pgvector ]))
59 postgresqlTestHook
60 pytest-asyncio
61 pytestCheckHook
62 scipy
63 sqlalchemy
64 sqlmodel
65 ];
66
67 env = {
68 PGDATABASE = "pgvector_python_test";
69 postgresqlEnableTCP = 1;
70 postgresqlTestUserOptions = "LOGIN SUPERUSER";
71 USER = "test_user";
72 };
73
74 disabledTestPaths = [
75 # DB error
76 "tests/test_pg8000.py"
77 "tests/test_sqlalchemy.py"
78 ];
79
80 pythonImportsCheck = [ "pgvector" ];
81
82 __darwinAllowLocalNetworking = true;
83
84 meta = {
85 description = "Pgvector support for Python";
86 homepage = "https://github.com/pgvector/pgvector-python";
87 changelog = "https://github.com/pgvector/pgvector-python/blob/${src.rev}/CHANGELOG.md";
88 license = lib.licenses.mit;
89 maintainers = with lib.maintainers; [ natsukium ];
90 };
91}