Skip to content

Commit db9954a

Browse files
committed
chore: pre-commit, ruff, mypy, type stubs
1 parent 2f02162 commit db9954a

6 files changed

Lines changed: 215 additions & 3 deletions

File tree

‎.pre-commit-config.yaml‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
repos:
2+
- repo: https://github.com/pre-commit/pre-commit-hooks
3+
rev: v5.0.0
4+
hooks:
5+
- id: trailing-whitespace
6+
- id: end-of-file-fixer
7+
- id: check-yaml
8+
- id: check-toml
9+
- id: check-merge-conflict
10+
- id: check-added-large-files
11+
- repo: https://github.com/astral-sh/ruff-pre-commit
12+
rev: v0.11.0
13+
hooks:
14+
- id: ruff
15+
args: [--fix, --unsafe-fixes]
16+
- id: ruff-format
17+
- repo: https://github.com/pre-commit/mirrors-mypy
18+
rev: v1.14.0
19+
hooks:
20+
- id: mypy
21+
additional_dependencies: [numpy]
22+
args: [--strict]
23+
- repo: local
24+
hooks:
25+
- id: cargo-fmt
26+
name: cargo fmt
27+
entry: cargo fmt --check
28+
language: system
29+
types: [rust]
30+
pass_filenames: false
31+
- id: cargo-clippy
32+
name: cargo clippy
33+
entry: cargo clippy -- -D warnings
34+
language: system
35+
types: [rust]
36+
pass_filenames: false

‎pyproject.toml‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,19 @@ Repository = "https://github.com/python-adaptive/adaptive-triangulation"
3333
features = ["pyo3/extension-module"]
3434
python-source = "python"
3535
module-name = "adaptive_triangulation._rust"
36+
37+
[tool.ruff]
38+
line-length = 100
39+
target-version = "py310"
40+
41+
[tool.ruff.lint]
42+
select = ["ALL"]
43+
ignore = ["D", "COM812", "ISC001"]
44+
45+
[tool.ruff.lint.per-file-ignores]
46+
"tests/*" = ["S101", "PLR2004", "ANN"]
47+
"benchmarks/*" = ["T201", "ANN", "S101"]
48+
49+
[tool.mypy]
50+
strict = true
51+
python_version = "3.10"

‎python/adaptive_triangulation/__init__.py‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222

2323
from __future__ import annotations
2424

25-
from adaptive_triangulation._rust import (
25+
from ._rust import (
2626
Triangulation,
27-
__version__ as __version__,
2827
circumsphere,
2928
fast_2d_circumcircle,
3029
fast_2d_point_in_simplex,
@@ -36,8 +35,11 @@
3635
simplex_volume_in_embedding,
3736
volume,
3837
)
38+
from ._rust import (
39+
__version__ as __version__,
40+
)
3941

40-
__all__ = [
42+
__all__: list[str] = [
4143
"Triangulation",
4244
"__version__",
4345
"circumsphere",
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from ._rust import (
2+
Triangulation as Triangulation,
3+
)
4+
from ._rust import (
5+
__version__ as __version__,
6+
)
7+
from ._rust import (
8+
circumsphere as circumsphere,
9+
)
10+
from ._rust import (
11+
fast_2d_circumcircle as fast_2d_circumcircle,
12+
)
13+
from ._rust import (
14+
fast_2d_point_in_simplex as fast_2d_point_in_simplex,
15+
)
16+
from ._rust import (
17+
fast_3d_circumcircle as fast_3d_circumcircle,
18+
)
19+
from ._rust import (
20+
fast_3d_circumsphere as fast_3d_circumsphere,
21+
)
22+
from ._rust import (
23+
fast_norm as fast_norm,
24+
)
25+
from ._rust import (
26+
orientation as orientation,
27+
)
28+
from ._rust import (
29+
point_in_simplex as point_in_simplex,
30+
)
31+
from ._rust import (
32+
simplex_volume_in_embedding as simplex_volume_in_embedding,
33+
)
34+
from ._rust import (
35+
volume as volume,
36+
)
37+
38+
__all__: list[str] = [
39+
"Triangulation",
40+
"__version__",
41+
"circumsphere",
42+
"fast_2d_circumcircle",
43+
"fast_2d_point_in_simplex",
44+
"fast_3d_circumcircle",
45+
"fast_3d_circumsphere",
46+
"fast_norm",
47+
"orientation",
48+
"point_in_simplex",
49+
"simplex_volume_in_embedding",
50+
"volume",
51+
]
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
from collections.abc import Iterable, Iterator, Sequence
2+
from typing import TypeAlias
3+
4+
import numpy as np
5+
import numpy.typing as npt
6+
7+
PointLike: TypeAlias = Sequence[float] | npt.ArrayLike
8+
PointsLike: TypeAlias = Sequence[Sequence[float]] | npt.ArrayLike
9+
SimplexLike: TypeAlias = Sequence[int]
10+
Simplex: TypeAlias = tuple[int, ...]
11+
SimplexSet: TypeAlias = set[Simplex]
12+
TransformLike: TypeAlias = Sequence[Sequence[float]] | npt.ArrayLike
13+
14+
__version__: str
15+
16+
17+
class Triangulation:
18+
def __init__(self, coords: PointsLike) -> None: ...
19+
20+
@property
21+
def vertices(self) -> list[tuple[float, ...]]: ...
22+
23+
@property
24+
def simplices(self) -> SimplexSet: ...
25+
26+
@property
27+
def vertex_to_simplices(self) -> list[SimplexSet]: ...
28+
29+
@property
30+
def hull(self) -> set[int]: ...
31+
32+
@property
33+
def dim(self) -> int: ...
34+
35+
@property
36+
def default_transform(self) -> npt.NDArray[np.float64]: ...
37+
38+
def add_simplex(self, simplex: SimplexLike) -> None: ...
39+
def delete_simplex(self, simplex: SimplexLike) -> None: ...
40+
def add_point(
41+
self,
42+
point: PointLike,
43+
simplex: SimplexLike | None = None,
44+
transform: TransformLike | None = None,
45+
) -> tuple[SimplexSet, SimplexSet]: ...
46+
def get_vertices(self, indices: Sequence[int]) -> list[tuple[float, ...]]: ...
47+
def locate_point(self, point: PointLike) -> tuple[int, ...]: ...
48+
def get_reduced_simplex(
49+
self,
50+
point: PointLike,
51+
simplex: SimplexLike,
52+
eps: float = 1e-8,
53+
) -> list[int]: ...
54+
def circumscribed_circle(
55+
self,
56+
simplex: SimplexLike,
57+
transform: TransformLike | None = None,
58+
) -> tuple[tuple[float, ...], float]: ...
59+
def point_in_circumcircle(
60+
self,
61+
pt_index: int,
62+
simplex: SimplexLike,
63+
transform: TransformLike | None = None,
64+
) -> bool: ...
65+
def point_in_cicumcircle(
66+
self,
67+
pt_index: int,
68+
simplex: SimplexLike,
69+
transform: TransformLike | None = None,
70+
) -> bool: ...
71+
def volume(self, simplex: SimplexLike) -> float: ...
72+
def volumes(self) -> list[float]: ...
73+
def faces(
74+
self,
75+
dim: int | None = None,
76+
simplices: Iterable[SimplexLike] | None = None,
77+
vertices: Iterable[int] | None = None,
78+
) -> Iterator[Simplex]: ...
79+
def containing(self, face: Sequence[int]) -> SimplexSet: ...
80+
def reference_invariant(self) -> bool: ...
81+
def point_in_simplex(
82+
self,
83+
point: PointLike,
84+
simplex: SimplexLike,
85+
eps: float = 1e-8,
86+
) -> bool: ...
87+
def bowyer_watson(
88+
self,
89+
pt_index: int,
90+
containing_simplex: SimplexLike | None = None,
91+
transform: TransformLike | None = None,
92+
) -> tuple[SimplexSet, SimplexSet]: ...
93+
def vertex_invariant(self, vertex: int) -> bool: ...
94+
def convex_invariant(self, vertex: int) -> bool: ...
95+
96+
97+
def circumsphere(points: PointsLike) -> tuple[tuple[float, ...], float]: ...
98+
def fast_2d_circumcircle(points: PointsLike) -> tuple[tuple[float, ...], float]: ...
99+
def fast_2d_point_in_simplex(point: PointLike, simplex: PointsLike, eps: float = 1e-8) -> bool: ...
100+
def fast_3d_circumcircle(points: PointsLike) -> tuple[tuple[float, ...], float]: ...
101+
def fast_3d_circumsphere(points: PointsLike) -> tuple[tuple[float, ...], float]: ...
102+
def fast_norm(point: PointLike) -> float: ...
103+
def orientation(face: PointsLike, origin: PointLike) -> int: ...
104+
def point_in_simplex(point: PointLike, simplex: PointsLike, eps: float = 1e-8) -> bool: ...
105+
def simplex_volume_in_embedding(vertices: PointsLike) -> float: ...
106+
def volume(simplex: PointsLike) -> float: ...
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

0 commit comments

Comments
 (0)