-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
53 lines (48 loc) · 2.22 KB
/
Copy pathCargo.toml
File metadata and controls
53 lines (48 loc) · 2.22 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
[package]
name = "gitxtend"
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
description = "gitoxide-backed git repository tending, exposed to Python via PyO3"
repository = "https://github.com/hartsock/gitxtend"
authors = ["Shawn Hartsock"]
# Primary artifact: a PyO3 extension module (Python import target). The optional
# standalone CLI (M3) is added later as a [[bin]] target reusing repo/status.
[lib]
name = "gitxtend"
crate-type = ["cdylib", "rlib"]
[features]
# Pure-Rust core builds by DEFAULT → `cargo test` / `cargo build` need no Python
# interpreter and link no libpython. The per-method M1 work is validated this way.
default = []
# PyO3 Python bindings (the `import gitxtend` surface). Opt-in.
python = ["dep:pyo3"]
# Turned on by maturin for the wheel build; layered on top of `python` so that a
# plain `cargo test` (neither feature) never pulls pyo3/extension-module.
extension-module = ["python", "pyo3/extension-module"]
[dependencies]
# gitoxide read side. Pinned to a recent release (rustc 1.93). Features
# are added per method: status (is_clean/status_counts), revision (ahead_behind/
# rev_list_count/log_subjects), dirwalk (untracked), blocking-network-client
# (fetch — M1's one network call).
# NOTE: gix's default features are kept ON. Stripping them
# (`default-features = false`) cuts feature propagation into gix sub-crates
# (e.g. gix-hash's `Kind` match goes non-exhaustive) and fails to build on
# rustc 1.93. We add the read-side features on top of the defaults.
#
# Pinned to 0.70 (not the 0.84 tip): gix 0.84's `status` feature requires a
# `gix-worktree-state` version not published to crates.io — its sub-crate tree
# is internally inconsistent. 0.70 resolves cleanly with the full read-side set.
gix = { version = "0.70", features = [
"status",
"revision",
"dirwalk",
"blocking-network-client",
] }
# PyO3 — only compiled when the `python` feature is on. `extension-module` is
# layered via the crate feature of the same name, so `cargo test` links no
# libpython and the pure-Rust core stays interpreter-free.
pyo3 = { version = "0.28", optional = true, default-features = false, features = ["macros"] }
[dev-dependencies]
# Temp-dir fixtures for parity tests vs the git CLI.
tempfile = "3"