fastws-cli 0.0.23__tar.gz → 0.0.25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {fastws_cli-0.0.23/fastws_cli.egg-info → fastws_cli-0.0.25}/PKG-INFO +8 -3
  2. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/README.md +6 -2
  3. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws/__init__.py +3 -1
  4. fastws_cli-0.0.25/fastws/build_backend.py +59 -0
  5. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws/cargo.py +7 -2
  6. {fastws_cli-0.0.23 → fastws_cli-0.0.25/fastws_cli.egg-info}/PKG-INFO +8 -3
  7. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws_cli.egg-info/SOURCES.txt +1 -0
  8. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws_cli.egg-info/requires.txt +1 -0
  9. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/pyproject.toml +1 -0
  10. fastws_cli-0.0.25/tests/test_build_backend.py +26 -0
  11. fastws_cli-0.0.23/fastws/build_backend.py +0 -38
  12. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/LICENSE +0 -0
  13. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws/core.py +0 -0
  14. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws/releases.py +0 -0
  15. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws_cli.egg-info/dependency_links.txt +0 -0
  16. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws_cli.egg-info/entry_points.txt +0 -0
  17. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/fastws_cli.egg-info/top_level.txt +0 -0
  18. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/setup.cfg +0 -0
  19. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/tests/test_build.py +0 -0
  20. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/tests/test_releases.py +0 -0
  21. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/tests/test_setup.py +0 -0
  22. {fastws_cli-0.0.23 → fastws_cli-0.0.25}/tests/test_sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastws-cli
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: Fast workspace tools for multi-repo management
5
5
  Author: Jeremy Howard
6
6
  License-Expression: Apache-2.0
@@ -14,6 +14,7 @@ Requires-Dist: fastcore>=2.2.33
14
14
  Requires-Dist: fastgit>=0.1.2
15
15
  Requires-Dist: ghapi>=2.0.6
16
16
  Requires-Dist: packaging
17
+ Requires-Dist: maturin<2.0,>=1.9.4
17
18
  Requires-Dist: tomli; python_version < "3.11"
18
19
  Provides-Extra: dev
19
20
  Requires-Dist: fastship; extra == "dev"
@@ -214,7 +215,11 @@ For reusable Rust libraries, keep the core crate Python-free and put PyO3 in an
214
215
 
215
216
  Set `native-binaries = true` under `[tool.fastws]` to build and install the binary targets of the workspace's default members into the active venv alongside the extension. A binary can live in its own member crate, such as a `cli/` crate beside `py/`, listed in `default-members`. maturin's sdist keeps only the members that the extension depends on, so a wheel built from the sdist lacks a binary from such a crate. Cargo reports the executable paths; there is no separate list of binary names.
216
217
 
217
- For wheels containing these binaries, use `fastws.build_backend` as the build backend and include `fastws-cli>=0.0.20` alongside maturin in `[build-system].requires`. Set `[tool.maturin].data` to a generated wheel-data directory. The backend replaces its `scripts/` subdirectory with the current Python-free binaries, then delegates packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries.
218
+ `cargo develop` also copies the `data/` subdirectory of `[tool.maturin].data` into the active venv, as a wheel install does. For example, `data/share/jupyter/kernels/<name>/kernel.json` is installed as `share/jupyter/kernels/<name>/kernel.json`, where Jupyter finds the kernel. `cargo develop` installs the binaries it builds, not the staged copies in `scripts/`.
219
+
220
+ Use `fastws.build_backend` as the build backend of a mixed project, and include `fastws-cli>=0.0.25` alongside maturin in `[build-system].requires`. Its editable builds install only Python metadata and the source path, and compile no Rust. `ws-sync` then runs `cargo develop` to build and install the extension, the binaries and the wheel data files. After standalone `uv sync`, run `cargo develop` yourself.
221
+
222
+ For distribution wheels containing the binaries, also set `[tool.maturin].data` to a generated wheel-data directory. With `native-binaries = true`, wheel builds through the backend replace its `scripts/` subdirectory with the current Python-free binaries, then delegate packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries. Without `native-binaries`, wheel builds go straight to maturin, and `[tool.maturin].data` is optional.
218
223
 
219
224
  Direct maturin CLI builds bypass the Python build backend. Stage the binaries first with the shared command:
220
225
 
@@ -254,7 +259,7 @@ An optional tracked `package.json.shared` is merged into the root `package.json`
254
259
 
255
260
  Before `uv sync`, fastws regenerates `tool.uv.no-build-isolation-package` with the sorted package names of projects using `fastws.build_backend`, including external checkouts. These builds use the shared environment's `fastws-cli` and `maturin`. Leave global build isolation enabled for other projects.
256
261
 
257
- After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. These projects should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo rather than triggering a separate maturin editable build. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
262
+ After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. Projects using `fastws.build_backend` should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
258
263
 
259
264
  Fastws then runs `<tool> install` at the workspace root. It runs `<tool> run build` in each JavaScript package containing both `Cargo.toml` and a `build` script. Cargo handles incremental compilation. Other build steps still run.
260
265
 
@@ -189,7 +189,11 @@ For reusable Rust libraries, keep the core crate Python-free and put PyO3 in an
189
189
 
190
190
  Set `native-binaries = true` under `[tool.fastws]` to build and install the binary targets of the workspace's default members into the active venv alongside the extension. A binary can live in its own member crate, such as a `cli/` crate beside `py/`, listed in `default-members`. maturin's sdist keeps only the members that the extension depends on, so a wheel built from the sdist lacks a binary from such a crate. Cargo reports the executable paths; there is no separate list of binary names.
191
191
 
192
- For wheels containing these binaries, use `fastws.build_backend` as the build backend and include `fastws-cli>=0.0.20` alongside maturin in `[build-system].requires`. Set `[tool.maturin].data` to a generated wheel-data directory. The backend replaces its `scripts/` subdirectory with the current Python-free binaries, then delegates packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries.
192
+ `cargo develop` also copies the `data/` subdirectory of `[tool.maturin].data` into the active venv, as a wheel install does. For example, `data/share/jupyter/kernels/<name>/kernel.json` is installed as `share/jupyter/kernels/<name>/kernel.json`, where Jupyter finds the kernel. `cargo develop` installs the binaries it builds, not the staged copies in `scripts/`.
193
+
194
+ Use `fastws.build_backend` as the build backend of a mixed project, and include `fastws-cli>=0.0.25` alongside maturin in `[build-system].requires`. Its editable builds install only Python metadata and the source path, and compile no Rust. `ws-sync` then runs `cargo develop` to build and install the extension, the binaries and the wheel data files. After standalone `uv sync`, run `cargo develop` yourself.
195
+
196
+ For distribution wheels containing the binaries, also set `[tool.maturin].data` to a generated wheel-data directory. With `native-binaries = true`, wheel builds through the backend replace its `scripts/` subdirectory with the current Python-free binaries, then delegate packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries. Without `native-binaries`, wheel builds go straight to maturin, and `[tool.maturin].data` is optional.
193
197
 
194
198
  Direct maturin CLI builds bypass the Python build backend. Stage the binaries first with the shared command:
195
199
 
@@ -229,7 +233,7 @@ An optional tracked `package.json.shared` is merged into the root `package.json`
229
233
 
230
234
  Before `uv sync`, fastws regenerates `tool.uv.no-build-isolation-package` with the sorted package names of projects using `fastws.build_backend`, including external checkouts. These builds use the shared environment's `fastws-cli` and `maturin`. Leave global build isolation enabled for other projects.
231
235
 
232
- After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. These projects should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo rather than triggering a separate maturin editable build. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
236
+ After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. Projects using `fastws.build_backend` should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
233
237
 
234
238
  Fastws then runs `<tool> install` at the workspace root. It runs `<tool> run build` in each JavaScript package containing both `Cargo.toml` and a `build` script. Cargo handles incremental compilation. Other build steps still run.
235
239
 
@@ -1,4 +1,6 @@
1
- __version__ = "0.0.23"
1
+ __version__ = "0.0.25"
2
+
3
+
2
4
 
3
5
 
4
6
 
@@ -0,0 +1,59 @@
1
+ r"Maturin build backend whose editable installs compile no Rust, and whose wheels can include Cargo binaries."
2
+ import argparse, base64, csv, hashlib, io
3
+ from pathlib import Path
4
+ from tempfile import TemporaryDirectory
5
+ from zipfile import ZipFile, ZIP_DEFLATED
6
+ import maturin
7
+ from .cargo import settings, stage_binaries
8
+
9
+
10
+ def _stage(config_settings):
11
+ root = Path.cwd()
12
+ tool = settings(root)
13
+ if not tool.get('fastws', {}).get('native-binaries'): return
14
+ parser = argparse.ArgumentParser(add_help=False)
15
+ parser.add_argument('--profile')
16
+ parser.add_argument('--release', action='store_true')
17
+ parser.add_argument('--target')
18
+ args, _ = parser.parse_known_args(maturin.get_maturin_pep517_args(config_settings))
19
+ profile = args.profile or ('release' if args.release else tool['maturin'].get('profile', 'release'))
20
+ stage_binaries(root, profile, args.target)
21
+
22
+
23
+ def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
24
+ _stage(config_settings)
25
+ return maturin.build_wheel(wheel_directory, config_settings, metadata_directory)
26
+
27
+
28
+ def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
29
+ r"Build an editable wheel containing metadata and the Python source path, without compiling Rust."
30
+ with TemporaryDirectory() as tmp:
31
+ info = Path(metadata_directory) if metadata_directory else Path(tmp)/prepare_metadata_for_build_editable(tmp, config_settings)
32
+ name = info.name.removesuffix('.dist-info')
33
+ tag = next(line.removeprefix('Tag: ') for line in (info/'WHEEL').read_text().splitlines() if line.startswith('Tag: '))
34
+ files = {p.relative_to(info.parent).as_posix(): p.read_bytes() for p in info.rglob('*') if p.is_file() and p != info/'RECORD'}
35
+ root = Path.cwd()
36
+ source = (root/settings(root)['maturin']['python-source']).resolve()
37
+ files[f'{name}.pth'] = f'{source}\n'.encode()
38
+ record = f'{info.name}/RECORD'
39
+ rows = [(path, 'sha256=' + base64.urlsafe_b64encode(hashlib.sha256(data).digest()).rstrip(b'=').decode(), len(data))
40
+ for path, data in files.items()]
41
+ buffer = io.StringIO()
42
+ csv.writer(buffer).writerows([*rows, (record, '', '')])
43
+ files[record] = buffer.getvalue().encode()
44
+ filename = f'{name}-{tag}.whl'
45
+ with ZipFile(Path(wheel_directory)/filename, 'w', ZIP_DEFLATED) as wheel:
46
+ for path, data in files.items(): wheel.writestr(path, data)
47
+ return filename
48
+
49
+
50
+ def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
51
+ if data := settings(Path.cwd())['maturin'].get('data'): (Path.cwd()/data).mkdir(parents=True, exist_ok=True)
52
+ return maturin.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
53
+
54
+
55
+ prepare_metadata_for_build_editable = prepare_metadata_for_build_wheel
56
+ build_sdist = maturin.build_sdist
57
+ get_requires_for_build_wheel = maturin.get_requires_for_build_wheel
58
+ get_requires_for_build_editable = maturin.get_requires_for_build_editable
59
+ get_requires_for_build_sdist = maturin.get_requires_for_build_sdist
@@ -49,7 +49,7 @@ def replace(source, destination):
49
49
 
50
50
 
51
51
  def develop(root):
52
- "Install a Python extension and opted-in binaries from one Cargo build."
52
+ "Install a Python extension, opted-in binaries and wheel data files from one Cargo build."
53
53
  tool = settings(root)
54
54
  cfg = tool['maturin']
55
55
  if 'python-source' not in cfg: raise SystemExit(r'cargo develop requires tool.maturin.python-source')
@@ -60,11 +60,16 @@ def develop(root):
60
60
  module = cfg.get('module-name', artifact['target']['name'])
61
61
  dest = root/cfg['python-source']/Path(*module.split('.'))
62
62
  replace(lib, dest.with_name(dest.name + sysconfig.get_config_var('EXT_SUFFIX')))
63
+ env = Path(os.environ.get('VIRTUAL_ENV', sys.prefix))
63
64
  if binaries:
64
- env = Path(os.environ.get('VIRTUAL_ENV', sys.prefix))
65
65
  scripts = env/('Scripts' if os.name == 'nt' else 'bin')
66
66
  for m in artifacts:
67
67
  if m.get('executable'): replace(m['executable'], scripts/Path(m['executable']).name)
68
+ # Editable builds through `build_backend` don't install the wheel's data files, which a wheel install puts under the prefix.
69
+ if 'data' in cfg:
70
+ data = root/cfg['data']/'data'
71
+ for f in data.rglob('*'):
72
+ if f.is_file(): replace(f, env/f.relative_to(data))
68
73
 
69
74
 
70
75
  def stage_binaries(root, profile=None, target=None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastws-cli
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: Fast workspace tools for multi-repo management
5
5
  Author: Jeremy Howard
6
6
  License-Expression: Apache-2.0
@@ -14,6 +14,7 @@ Requires-Dist: fastcore>=2.2.33
14
14
  Requires-Dist: fastgit>=0.1.2
15
15
  Requires-Dist: ghapi>=2.0.6
16
16
  Requires-Dist: packaging
17
+ Requires-Dist: maturin<2.0,>=1.9.4
17
18
  Requires-Dist: tomli; python_version < "3.11"
18
19
  Provides-Extra: dev
19
20
  Requires-Dist: fastship; extra == "dev"
@@ -214,7 +215,11 @@ For reusable Rust libraries, keep the core crate Python-free and put PyO3 in an
214
215
 
215
216
  Set `native-binaries = true` under `[tool.fastws]` to build and install the binary targets of the workspace's default members into the active venv alongside the extension. A binary can live in its own member crate, such as a `cli/` crate beside `py/`, listed in `default-members`. maturin's sdist keeps only the members that the extension depends on, so a wheel built from the sdist lacks a binary from such a crate. Cargo reports the executable paths; there is no separate list of binary names.
216
217
 
217
- For wheels containing these binaries, use `fastws.build_backend` as the build backend and include `fastws-cli>=0.0.20` alongside maturin in `[build-system].requires`. Set `[tool.maturin].data` to a generated wheel-data directory. The backend replaces its `scripts/` subdirectory with the current Python-free binaries, then delegates packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries.
218
+ `cargo develop` also copies the `data/` subdirectory of `[tool.maturin].data` into the active venv, as a wheel install does. For example, `data/share/jupyter/kernels/<name>/kernel.json` is installed as `share/jupyter/kernels/<name>/kernel.json`, where Jupyter finds the kernel. `cargo develop` installs the binaries it builds, not the staged copies in `scripts/`.
219
+
220
+ Use `fastws.build_backend` as the build backend of a mixed project, and include `fastws-cli>=0.0.25` alongside maturin in `[build-system].requires`. Its editable builds install only Python metadata and the source path, and compile no Rust. `ws-sync` then runs `cargo develop` to build and install the extension, the binaries and the wheel data files. After standalone `uv sync`, run `cargo develop` yourself.
221
+
222
+ For distribution wheels containing the binaries, also set `[tool.maturin].data` to a generated wheel-data directory. With `native-binaries = true`, wheel builds through the backend replace its `scripts/` subdirectory with the current Python-free binaries, then delegate packaging to maturin. Explicit profile and target arguments from maturin's build settings also apply to the binaries. Without `native-binaries`, wheel builds go straight to maturin, and `[tool.maturin].data` is optional.
218
223
 
219
224
  Direct maturin CLI builds bypass the Python build backend. Stage the binaries first with the shared command:
220
225
 
@@ -254,7 +259,7 @@ An optional tracked `package.json.shared` is merged into the root `package.json`
254
259
 
255
260
  Before `uv sync`, fastws regenerates `tool.uv.no-build-isolation-package` with the sorted package names of projects using `fastws.build_backend`, including external checkouts. These builds use the shared environment's `fastws-cli` and `maturin`. Leave global build isolation enabled for other projects.
256
261
 
257
- After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. These projects should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo rather than triggering a separate maturin editable build. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
262
+ After `uv sync`, fastws runs `cargo develop` in each mixed Rust/Python project. Cargo skips unchanged compilation inputs. Projects using `fastws.build_backend` should keep only packaging inputs in `tool.uv.cache-keys`; Rust source changes are handled by Cargo. Maturin packages with `bindings = "bin"` keep their existing uv installation path.
258
263
 
259
264
  Fastws then runs `<tool> install` at the workspace root. It runs `<tool> run build` in each JavaScript package containing both `Cargo.toml` and a `build` script. Cargo handles incremental compilation. Other build steps still run.
260
265
 
@@ -13,6 +13,7 @@ fastws_cli.egg-info/entry_points.txt
13
13
  fastws_cli.egg-info/requires.txt
14
14
  fastws_cli.egg-info/top_level.txt
15
15
  tests/test_build.py
16
+ tests/test_build_backend.py
16
17
  tests/test_releases.py
17
18
  tests/test_setup.py
18
19
  tests/test_sync.py
@@ -2,6 +2,7 @@ fastcore>=2.2.33
2
2
  fastgit>=0.1.2
3
3
  ghapi>=2.0.6
4
4
  packaging
5
+ maturin<2.0,>=1.9.4
5
6
 
6
7
  [:python_version < "3.11"]
7
8
  tomli
@@ -20,6 +20,7 @@ dependencies = [
20
20
  "fastgit>=0.1.2",
21
21
  "ghapi>=2.0.6",
22
22
  "packaging",
23
+ "maturin>=1.9.4,<2.0",
23
24
  "tomli; python_version < '3.11'",
24
25
  ]
25
26
 
@@ -0,0 +1,26 @@
1
+ import base64, csv, hashlib, io
2
+ from zipfile import ZipFile
3
+ from fastws.build_backend import build_editable
4
+
5
+
6
+ def test_editable_wheel(tmp_path, monkeypatch):
7
+ monkeypatch.chdir(tmp_path)
8
+ (tmp_path/'pyproject.toml').write_text(r'''[tool.maturin]
9
+ python-source = "python"
10
+ data = "wheel"
11
+ ''')
12
+ info = tmp_path/'demo-1.0.dist-info'
13
+ info.mkdir()
14
+ (info/'WHEEL').write_text('Wheel-Version: 1.0\nRoot-Is-Purelib: false\nTag: py3-none-any\n')
15
+ (info/'METADATA').write_text('Metadata-Version: 2.1\nName: demo\nVersion: 1.0\n')
16
+ (info/'entry_points.txt').write_text('[console_scripts]\ndemo = demo:main\n')
17
+ with ZipFile(tmp_path/build_editable(tmp_path, metadata_directory=info)) as wheel:
18
+ assert wheel.read('demo-1.0.pth').decode() == str(tmp_path/'python') + '\n'
19
+ assert wheel.read('demo-1.0.dist-info/entry_points.txt') == (info/'entry_points.txt').read_bytes()
20
+ record = list(csv.reader(io.StringIO(wheel.read('demo-1.0.dist-info/RECORD').decode())))
21
+ assert {row[0] for row in record} == set(wheel.namelist())
22
+ for path, digest, size in record[:-1]:
23
+ data = wheel.read(path)
24
+ assert digest == 'sha256=' + base64.urlsafe_b64encode(hashlib.sha256(data).digest()).rstrip(b'=').decode()
25
+ assert int(size) == len(data)
26
+ assert record[-1] == ['demo-1.0.dist-info/RECORD', '', '']
@@ -1,38 +0,0 @@
1
- r"Maturin build backend that includes Cargo binaries in Python wheels."
2
- import argparse
3
- from pathlib import Path
4
- import maturin
5
- from .cargo import settings, stage_binaries
6
-
7
-
8
- def _stage(config_settings):
9
- parser = argparse.ArgumentParser(add_help=False)
10
- parser.add_argument('--profile')
11
- parser.add_argument('--release', action='store_true')
12
- parser.add_argument('--target')
13
- args, _ = parser.parse_known_args(maturin.get_maturin_pep517_args(config_settings))
14
- root = Path.cwd()
15
- profile = args.profile or ('release' if args.release else settings(root)['maturin'].get('profile', 'release'))
16
- stage_binaries(root, profile, args.target)
17
-
18
-
19
- def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
20
- _stage(config_settings)
21
- return maturin.build_wheel(wheel_directory, config_settings, metadata_directory)
22
-
23
-
24
- def build_editable(wheel_directory, config_settings=None, metadata_directory=None):
25
- _stage(config_settings)
26
- return maturin.build_editable(wheel_directory, config_settings, metadata_directory)
27
-
28
-
29
- def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
30
- (Path.cwd()/settings(Path.cwd())['maturin']['data']).mkdir(parents=True, exist_ok=True)
31
- return maturin.prepare_metadata_for_build_wheel(metadata_directory, config_settings)
32
-
33
-
34
- prepare_metadata_for_build_editable = prepare_metadata_for_build_wheel
35
- build_sdist = maturin.build_sdist
36
- get_requires_for_build_wheel = maturin.get_requires_for_build_wheel
37
- get_requires_for_build_editable = maturin.get_requires_for_build_editable
38
- get_requires_for_build_sdist = maturin.get_requires_for_build_sdist
File without changes
File without changes
File without changes