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