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 postgresql,
17 postgresqlTestHook,
18 psycopg,
19 psycopg2,
20 pytest-asyncio,
21 pytestCheckHook,
22 scipy,
23 sqlalchemy,
24 sqlmodel,
25}:
26
27buildPythonPackage rec {
28 pname = "pgvector";
29 version = "0.3.6";
30 pyproject = true;
31
32 src = fetchFromGitHub {
33 owner = "pgvector";
34 repo = "pgvector-python";
35 tag = "v${version}";
36 hash = "sha256-ho0UgamZxsN+pv7QkpsDnN7f+I+SrexA2gVtmJF8/3Q=";
37 };
38
39 build-system = [ setuptools ];
40
41 dependencies = [ numpy ];
42
43 nativeCheckInputs = [
44 asyncpg
45 django
46 peewee
47 psycopg
48 psycopg2
49 (postgresql.withPackages (p: with p; [ pgvector ]))
50 postgresqlTestHook
51 pytest-asyncio
52 pytestCheckHook
53 scipy
54 sqlalchemy
55 sqlmodel
56 ];
57
58 env = {
59 PGDATABASE = "pgvector_python_test";
60 postgresqlEnableTCP = 1;
61 postgresqlTestUserOptions = "LOGIN SUPERUSER";
62 };
63
64 pythonImportsCheck = [ "pgvector" ];
65
66 __darwinAllowLocalNetworking = true;
67
68 meta = {
69 description = "Pgvector support for Python";
70 homepage = "https://github.com/pgvector/pgvector-python";
71 changelog = "https://github.com/pgvector/pgvector-python/blob/${src.rev}/CHANGELOG.md";
72 license = lib.licenses.mit;
73 maintainers = with lib.maintainers; [ natsukium ];
74 };
75}