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 nativeCheckInputs = [
46 asyncpg
47 django
48 peewee
49 pg8000
50 psycopg
51 psycopg.pool
52 psycopg2
53 psycopg-pool
54 (postgresql.withPackages (p: with p; [ pgvector ]))
55 postgresqlTestHook
56 pytest-asyncio
57 pytestCheckHook
58 scipy
59 sqlalchemy
60 sqlmodel
61 ];
62
63 env = {
64 PGDATABASE = "pgvector_python_test";
65 postgresqlEnableTCP = 1;
66 postgresqlTestUserOptions = "LOGIN SUPERUSER";
67 USER = "test_user";
68 };
69
70 disabledTestPaths = [
71 # DB error
72 "tests/test_pg8000.py"
73 "tests/test_sqlalchemy.py"
74 ];
75
76 pythonImportsCheck = [ "pgvector" ];
77
78 __darwinAllowLocalNetworking = true;
79
80 meta = {
81 description = "Pgvector support for Python";
82 homepage = "https://github.com/pgvector/pgvector-python";
83 changelog = "https://github.com/pgvector/pgvector-python/blob/${src.rev}/CHANGELOG.md";
84 license = lib.licenses.mit;
85 maintainers = with lib.maintainers; [ natsukium ];
86 };
87}