-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
108 lines (100 loc) · 3.93 KB
/
Copy pathpyproject.toml
File metadata and controls
108 lines (100 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[build-system]
requires = ["maturin>=1.14,<2.0"]
build-backend = "maturin"
[project]
name = "zudb"
version = "0.0.2"
description = "zu: an embedded property-graph database, in your process"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.11"
authors = [{ name = "Tam Nguyen", email = "tamnd87@gmail.com" }]
keywords = ["graph", "database", "gql", "embedded", "analytics"]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Rust",
"Topic :: Database :: Database Engines/Servers",
"Typing :: Typed",
]
# Nothing. The wheel has the engine in it, and a notebook that wants a
# DataFrame back brings its own pandas.
dependencies = []
[project.urls]
Homepage = "https://zu.dev"
Source = "https://github.com/tamnd/zu-python"
Engine = "https://github.com/tamnd/zu"
Issues = "https://github.com/tamnd/zu-python/issues"
[project.optional-dependencies]
# pyarrow 14 is where the Arrow PyCapsule interface arrived, and polars
# 1.3 is where its constructor started reading one. Below those a
# result would have to be handed over the old way, through a pointer
# address, which is a worse contract than saying no.
arrow = ["pyarrow>=14"]
pandas = ["pandas>=2.0", "pyarrow>=14"]
polars = ["polars>=1.3"]
# numpy 1.23 is where `numpy.dtypes` and the 1.x ABI settled, and it is
# older than anything a caller is likely to be holding. Nothing else
# comes with it: `fetchnumpy` wraps the engine's own buffers and needs
# no Arrow on the way.
numpy = ["numpy>=1.23"]
all = ["pyarrow>=14", "pandas>=2.0", "polars>=1.3", "numpy>=1.23"]
[dependency-groups]
dev = [
"maturin>=1.14,<2.0",
"pytest>=8",
"ruff>=0.9",
# Reads the stub as text and the built extension by inspection, which
# is what checks one against the other.
"griffe>=2",
# The reference generator. `tools/reference.py` drives it, and the
# release builds the pages from the wheel it is about to publish.
"pdoc>=16",
# For `%gql` and `%%gql`, which are tested against a real shell
# rather than against a stub of one. Not a dependency of the wheel:
# anyone with a notebook has IPython already, and nobody else needs
# it.
"ipython>=8",
"pyarrow>=14",
"pandas>=2.0",
"polars>=1.3",
]
[tool.maturin]
python-source = "python"
module-name = "zudb._zudb"
# Only maturin knows how to link an extension module on every platform
# it builds for, so the feature is asked for here rather than being on
# by default in Cargo.toml, where it would break a plain `cargo build`.
features = ["pyo3/extension-module"]
strip = true
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"
# `tools` holds the checks the release job runs, which are tested here
# rather than only on the tag that would fail because of one, and `.`
# holds `conformance`, which is a development tool rather than something
# the wheel ships.
pythonpath = ["tools", "."]
# Tests that assert on a wall clock: that two connections overlap, that
# an interrupt is felt inside a budget, that appending beats inserting
# by a margin. They are the tests that say this client is fast, and
# they are meaningless under a sanitizer, which makes every instruction
# slower by a factor nobody controls and the two sides of a ratio
# slower by different ones. The jobs that run under one deselect them
# by this marker and the ordinary jobs run them all.
#
# The marker covers one thing that reads no clock at all: counting how
# far the main thread gets while another one is inside the engine, which
# is how the GIL is checked to be released. Valgrind runs one thread at
# a time, so that count is zero there no matter what the binding does.
# It is the same problem for the same reason and it wants the same
# marker.
markers = [
"timing: asserts on how fast or how concurrently something ran, so a sanitizer run has to skip it"
]
[tool.ruff]
target-version = "py311"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]