maturin 1.7.0__tar.gz → 1.7.1__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.

Potentially problematic release.


This version of maturin might be problematic. Click here for more details.

Files changed (60) hide show
  1. {maturin-1.7.0 → maturin-1.7.1}/.pre-commit-config.yaml +2 -2
  2. {maturin-1.7.0 → maturin-1.7.1}/Cargo.lock +19 -19
  3. {maturin-1.7.0 → maturin-1.7.1}/Cargo.toml +5 -5
  4. {maturin-1.7.0 → maturin-1.7.1}/Changelog.md +5 -2
  5. {maturin-1.7.0 → maturin-1.7.1}/PKG-INFO +3 -3
  6. {maturin-1.7.0 → maturin-1.7.1}/maturin.schema.json +37 -0
  7. {maturin-1.7.0 → maturin-1.7.1}/pyproject.toml +7 -4
  8. {maturin-1.7.0 → maturin-1.7.1}/setup.py +0 -22
  9. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/audit.rs +27 -2
  10. maturin-1.7.1/src/auditwheel/manylinux-policy.json +699 -0
  11. {maturin-1.7.0 → maturin-1.7.1}/src/build_context.rs +17 -5
  12. {maturin-1.7.0 → maturin-1.7.1}/src/build_options.rs +25 -11
  13. {maturin-1.7.0 → maturin-1.7.1}/src/compile.rs +2 -1
  14. {maturin-1.7.0 → maturin-1.7.1}/src/develop.rs +2 -0
  15. {maturin-1.7.0 → maturin-1.7.1}/src/lib.rs +4 -4
  16. {maturin-1.7.0 → maturin-1.7.1}/src/module_writer.rs +28 -19
  17. {maturin-1.7.0 → maturin-1.7.1}/src/project_layout.rs +4 -0
  18. {maturin-1.7.0 → maturin-1.7.1}/src/pyproject_toml.rs +10 -0
  19. {maturin-1.7.0 → maturin-1.7.1}/src/source_distribution.rs +153 -58
  20. maturin-1.7.0/src/auditwheel/manylinux-policy.json +0 -507
  21. {maturin-1.7.0 → maturin-1.7.1}/.cirrus.yml +0 -0
  22. {maturin-1.7.0 → maturin-1.7.1}/.codespellrc +0 -0
  23. {maturin-1.7.0 → maturin-1.7.1}/.config/nextest.toml +0 -0
  24. {maturin-1.7.0 → maturin-1.7.1}/.gitignore +0 -0
  25. {maturin-1.7.0 → maturin-1.7.1}/MANIFEST.in +0 -0
  26. {maturin-1.7.0 → maturin-1.7.1}/README.md +0 -0
  27. {maturin-1.7.0 → maturin-1.7.1}/clippy.toml +0 -0
  28. {maturin-1.7.0 → maturin-1.7.1}/license-apache +0 -0
  29. {maturin-1.7.0 → maturin-1.7.1}/license-mit +0 -0
  30. {maturin-1.7.0 → maturin-1.7.1}/maturin/__init__.py +0 -0
  31. {maturin-1.7.0 → maturin-1.7.1}/maturin/__main__.py +0 -0
  32. {maturin-1.7.0 → maturin-1.7.1}/netlify.toml +0 -0
  33. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/mod.rs +0 -0
  34. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/musllinux-policy.json +0 -0
  35. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/musllinux.rs +0 -0
  36. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/patchelf.rs +0 -0
  37. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/platform_tag.rs +0 -0
  38. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/policy.rs +0 -0
  39. {maturin-1.7.0 → maturin-1.7.1}/src/auditwheel/repair.rs +0 -0
  40. {maturin-1.7.0 → maturin-1.7.1}/src/cargo_toml.rs +0 -0
  41. {maturin-1.7.0 → maturin-1.7.1}/src/ci.rs +0 -0
  42. {maturin-1.7.0 → maturin-1.7.1}/src/cross_compile.rs +0 -0
  43. {maturin-1.7.0 → maturin-1.7.1}/src/generate_json_schema.rs +0 -0
  44. {maturin-1.7.0 → maturin-1.7.1}/src/main.rs +0 -0
  45. {maturin-1.7.0 → maturin-1.7.1}/src/metadata.rs +0 -0
  46. {maturin-1.7.0 → maturin-1.7.1}/src/new_project.rs +0 -0
  47. {maturin-1.7.0 → maturin-1.7.1}/src/python_interpreter/config.rs +0 -0
  48. {maturin-1.7.0 → maturin-1.7.1}/src/python_interpreter/get_interpreter_metadata.py +0 -0
  49. {maturin-1.7.0 → maturin-1.7.1}/src/python_interpreter/mod.rs +0 -0
  50. {maturin-1.7.0 → maturin-1.7.1}/src/target.rs +0 -0
  51. {maturin-1.7.0 → maturin-1.7.1}/src/templates/.gitignore.j2 +0 -0
  52. {maturin-1.7.0 → maturin-1.7.1}/src/templates/Cargo.toml.j2 +0 -0
  53. {maturin-1.7.0 → maturin-1.7.1}/src/templates/__init__.py.j2 +0 -0
  54. {maturin-1.7.0 → maturin-1.7.1}/src/templates/build.rs.j2 +0 -0
  55. {maturin-1.7.0 → maturin-1.7.1}/src/templates/example.udl.j2 +0 -0
  56. {maturin-1.7.0 → maturin-1.7.1}/src/templates/lib.rs.j2 +0 -0
  57. {maturin-1.7.0 → maturin-1.7.1}/src/templates/main.rs.j2 +0 -0
  58. {maturin-1.7.0 → maturin-1.7.1}/src/templates/pyproject.toml.j2 +0 -0
  59. {maturin-1.7.0 → maturin-1.7.1}/src/templates/test_all.py.j2 +0 -0
  60. {maturin-1.7.0 → maturin-1.7.1}/src/upload.rs +0 -0
@@ -56,12 +56,12 @@ repos:
56
56
  )
57
57
  - id: mixed-line-ending
58
58
  - repo: https://github.com/astral-sh/ruff-pre-commit
59
- rev: v0.5.0
59
+ rev: v0.6.1
60
60
  hooks:
61
61
  - id: ruff-format
62
62
  - id: ruff
63
63
  - repo: https://github.com/pre-commit/mirrors-mypy
64
- rev: v1.10.1
64
+ rev: v1.11.1
65
65
  hooks:
66
66
  - id: mypy
67
67
  entry: mypy maturin/
@@ -336,9 +336,9 @@ dependencies = [
336
336
 
337
337
  [[package]]
338
338
  name = "cc"
339
- version = "1.0.104"
339
+ version = "1.1.6"
340
340
  source = "registry+https://github.com/rust-lang/crates.io-index"
341
- checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
341
+ checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f"
342
342
 
343
343
  [[package]]
344
344
  name = "cfb"
@@ -411,9 +411,9 @@ dependencies = [
411
411
 
412
412
  [[package]]
413
413
  name = "clap_complete_command"
414
- version = "0.5.1"
414
+ version = "0.6.1"
415
415
  source = "registry+https://github.com/rust-lang/crates.io-index"
416
- checksum = "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d"
416
+ checksum = "da8e198c052315686d36371e8a3c5778b7852fc75cc313e4e11eeb7a644a1b62"
417
417
  dependencies = [
418
418
  "clap",
419
419
  "clap_complete",
@@ -422,9 +422,9 @@ dependencies = [
422
422
 
423
423
  [[package]]
424
424
  name = "clap_complete_nushell"
425
- version = "0.1.11"
425
+ version = "4.5.2"
426
426
  source = "registry+https://github.com/rust-lang/crates.io-index"
427
- checksum = "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e"
427
+ checksum = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3"
428
428
  dependencies = [
429
429
  "clap",
430
430
  "clap_complete",
@@ -1216,7 +1216,7 @@ dependencies = [
1216
1216
 
1217
1217
  [[package]]
1218
1218
  name = "maturin"
1219
- version = "1.7.0"
1219
+ version = "1.7.1"
1220
1220
  dependencies = [
1221
1221
  "anyhow",
1222
1222
  "base64 0.21.7",
@@ -1463,9 +1463,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
1463
1463
 
1464
1464
  [[package]]
1465
1465
  name = "openssl"
1466
- version = "0.10.64"
1466
+ version = "0.10.66"
1467
1467
  source = "registry+https://github.com/rust-lang/crates.io-index"
1468
- checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
1468
+ checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
1469
1469
  dependencies = [
1470
1470
  "bitflags 2.5.0",
1471
1471
  "cfg-if",
@@ -1495,9 +1495,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
1495
1495
 
1496
1496
  [[package]]
1497
1497
  name = "openssl-sys"
1498
- version = "0.9.102"
1498
+ version = "0.9.103"
1499
1499
  source = "registry+https://github.com/rust-lang/crates.io-index"
1500
- checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
1500
+ checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
1501
1501
  dependencies = [
1502
1502
  "cc",
1503
1503
  "libc",
@@ -1564,9 +1564,9 @@ checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
1564
1564
 
1565
1565
  [[package]]
1566
1566
  name = "pep440_rs"
1567
- version = "0.5.0"
1567
+ version = "0.6.0"
1568
1568
  source = "registry+https://github.com/rust-lang/crates.io-index"
1569
- checksum = "15efd4d885c29126cc93e12af3087896e2518bd5ca0fb328c19c4ef9cecfa8be"
1569
+ checksum = "ca0a570e7ec9171250cac57614e901f62408094b54b3798bb920d3cf0d4a0e09"
1570
1570
  dependencies = [
1571
1571
  "once_cell",
1572
1572
  "serde",
@@ -1577,9 +1577,9 @@ dependencies = [
1577
1577
 
1578
1578
  [[package]]
1579
1579
  name = "pep508_rs"
1580
- version = "0.4.2"
1580
+ version = "0.6.0"
1581
1581
  source = "registry+https://github.com/rust-lang/crates.io-index"
1582
- checksum = "1455babf8edd3eedcdfcb39700e455a4bb189e71b4f1fa0eacc9b244cc5a55e6"
1582
+ checksum = "581c27e97a3f38c5d691962af7da93c2672b5227d59cf165b87a9b1fd53dd724"
1583
1583
  dependencies = [
1584
1584
  "derivative",
1585
1585
  "once_cell",
@@ -1690,9 +1690,9 @@ dependencies = [
1690
1690
 
1691
1691
  [[package]]
1692
1692
  name = "pyproject-toml"
1693
- version = "0.10.0"
1693
+ version = "0.11.0"
1694
1694
  source = "registry+https://github.com/rust-lang/crates.io-index"
1695
- checksum = "3b80f889b6d413c3f8963a2c7db03f95dd6e1d85e1074137cb2013ea2faa8898"
1695
+ checksum = "ef7061023bcb58a0fc4a4bbe9819c13b0dca7c2abc14da14f5ecc1532ab3a36a"
1696
1696
  dependencies = [
1697
1697
  "indexmap 2.2.6",
1698
1698
  "pep440_rs",
@@ -2318,9 +2318,9 @@ dependencies = [
2318
2318
 
2319
2319
  [[package]]
2320
2320
  name = "target-lexicon"
2321
- version = "0.12.14"
2321
+ version = "0.12.15"
2322
2322
  source = "registry+https://github.com/rust-lang/crates.io-index"
2323
- checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
2323
+ checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2"
2324
2324
 
2325
2325
  [[package]]
2326
2326
  name = "tempfile"
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  authors = ["konstin <konstin@mailbox.org>", "messense <messense@icloud.com>"]
3
3
  name = "maturin"
4
- version = "1.7.0"
4
+ version = "1.7.1"
5
5
  description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages"
6
6
  exclude = [
7
7
  "test-crates/**/*",
@@ -70,7 +70,7 @@ rustc_version = "0.4.0"
70
70
  semver = "1.0.22"
71
71
  target-lexicon = "0.12.14"
72
72
  indexmap = "2.2.3"
73
- pyproject-toml = "0.10.0"
73
+ pyproject-toml = "0.11.0"
74
74
  python-pkginfo = "0.6.0"
75
75
  textwrap = "0.16.1"
76
76
  ignore = "0.4.20"
@@ -80,8 +80,8 @@ cc = "1.0.88"
80
80
  dunce = "1.0.2"
81
81
  normpath = "1.1.1"
82
82
  path-slash = "0.2.1"
83
- pep440_rs = { version = "0.5.0", features = ["serde", "tracing"] }
84
- pep508_rs = { version = "0.4.2", features = ["serde", "tracing"] }
83
+ pep440_rs = { version = "0.6.0", features = ["serde", "tracing"] }
84
+ pep508_rs = { version = "0.6.0", features = ["serde", "tracing"] }
85
85
  same-file = "1.0.6"
86
86
  time = "0.3.17"
87
87
  url = "2.5.0"
@@ -94,7 +94,7 @@ clap = { version = "4.0.0", features = [
94
94
  "wrap_help",
95
95
  "unstable-styles",
96
96
  ] }
97
- clap_complete_command = { version = "0.5.1", default-features = false, features = ["nushell"], optional = true }
97
+ clap_complete_command = { version = "0.6.1", optional = true }
98
98
 
99
99
  # cross compile
100
100
  cargo-zigbuild = { version = "0.18.4", default-features = false, optional = true }
@@ -1,6 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [1.7.1]
4
+
5
+ * Forward `cargo package --list` warnings in [#2186](https://github.com/PyO3/maturin/pull/2186)
6
+ * In source distributions, we move the readmes of path dependencies into the respective crate to avoid collision between different readmes in [#2184](https://github.com/PyO3/maturin/pull/2184)
4
7
 
5
8
  ## [1.7.0] - 2024-07-07
6
9
 
@@ -826,7 +829,7 @@ With this release, the name of this project changes from _pyo3-pack_ to _maturin
826
829
 
827
830
  ### Changed
828
831
 
829
- * The `--skip-auditwheel` flag has been deprecated in favor of `--manxlinux=[1|1-unchecked|2010|2010-unchecked|off]`.
832
+ * The `--skip-auditwheel` flag has been deprecated in favor of `--manylinux=[1|1-unchecked|2010|2010-unchecked|off]`.
830
833
  * Switched to rustls. This means the upload feature can be used from the docker container and builds of maturin itself are manylinux compliant when compiled with the musl target.
831
834
 
832
835
  ## [0.4.2] - 2018-12-15
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: maturin
3
- Version: 1.7.0
3
+ Version: 1.7.1
4
4
  Classifier: Topic :: Software Development :: Build Tools
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -14,10 +14,10 @@ Summary: Build and publish crates with pyo3, cffi and uniffi bindings as well as
14
14
  Keywords: python,cffi,packaging,pypi,pyo3
15
15
  Home-Page: https://github.com/pyo3/maturin
16
16
  Author: konstin <konstin@mailbox.org>, messense <messense@icloud.com>
17
- Author-email: konstin <konstin@mailbox.org>, messense <messense@icloud.com>
17
+ Author-email: konstin <konstin@mailbox.org>
18
18
  License: MIT OR Apache-2.0
19
19
  Requires-Python: >=3.7
20
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
20
+ Description-Content-Type: text/markdown
21
21
  Project-URL: Source Code, https://github.com/PyO3/maturin
22
22
  Project-URL: Issues, https://github.com/PyO3/maturin/issues
23
23
  Project-URL: Documentation, https://maturin.rs
@@ -11,6 +11,17 @@
11
11
  "null"
12
12
  ]
13
13
  },
14
+ "auditwheel": {
15
+ "description": "Audit wheel mode",
16
+ "anyOf": [
17
+ {
18
+ "$ref": "#/definitions/AuditWheelMode"
19
+ },
20
+ {
21
+ "type": "null"
22
+ }
23
+ ]
24
+ },
14
25
  "bindings": {
15
26
  "description": "Bindings type",
16
27
  "type": [
@@ -194,6 +205,32 @@
194
205
  }
195
206
  },
196
207
  "definitions": {
208
+ "AuditWheelMode": {
209
+ "description": "Auditwheel mode",
210
+ "oneOf": [
211
+ {
212
+ "description": "Audit and repair wheel for manylinux compliance",
213
+ "type": "string",
214
+ "enum": [
215
+ "repair"
216
+ ]
217
+ },
218
+ {
219
+ "description": "Check wheel for manylinux compliance, but do not repair",
220
+ "type": "string",
221
+ "enum": [
222
+ "check"
223
+ ]
224
+ },
225
+ {
226
+ "description": "Don't check for manylinux compliance",
227
+ "type": "string",
228
+ "enum": [
229
+ "skip"
230
+ ]
231
+ }
232
+ ]
233
+ },
197
234
  "CargoTarget": {
198
235
  "description": "Cargo compile target",
199
236
  "type": "object",
@@ -5,7 +5,11 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "maturin"
8
+ description = "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages"
9
+ authors = [{ name = "konstin", email = "konstin@mailbox.org" }]
10
+ readme = { file = "README.md", content-type = "text/markdown" }
8
11
  requires-python = ">=3.7"
12
+ license = {text = "MIT OR Apache-2.0"}
9
13
  classifiers = [
10
14
  "Topic :: Software Development :: Build Tools",
11
15
  "Programming Language :: Rust",
@@ -14,10 +18,6 @@ classifiers = [
14
18
  ]
15
19
  dependencies = ["tomli>=1.1.0 ; python_version<'3.11'"]
16
20
  dynamic = [
17
- "authors",
18
- "description",
19
- "license",
20
- "readme",
21
21
  "version"
22
22
  ]
23
23
 
@@ -35,6 +35,9 @@ Issues = "https://github.com/PyO3/maturin/issues"
35
35
  Documentation = "https://maturin.rs"
36
36
  Changelog = "https://maturin.rs/changelog.html"
37
37
 
38
+ [tool.setuptools]
39
+ packages = ["maturin"]
40
+
38
41
  [tool.maturin]
39
42
  bindings = "bin"
40
43
 
@@ -38,9 +38,6 @@ try:
38
38
  except ImportError:
39
39
  bdist_wheel = None
40
40
 
41
- with open("README.md", encoding="utf-8", errors="ignore") as fp:
42
- long_description = fp.read()
43
-
44
41
  with open("Cargo.toml", "rb") as fp:
45
42
  version = tomllib.load(fp)["package"]["version"]
46
43
 
@@ -51,27 +48,8 @@ if os.getenv("MATURIN_SETUP_ARGS"):
51
48
  cargo_args = shlex.split(os.getenv("MATURIN_SETUP_ARGS", ""))
52
49
 
53
50
  setup(
54
- name="maturin",
55
- author="konstin",
56
- author_email="konstin@mailbox.org",
57
- url="https://github.com/pyo3/maturin",
58
- description="Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as "
59
- "python packages",
60
- long_description=long_description,
61
- long_description_content_type="text/markdown",
62
51
  version=version,
63
- license="MIT OR Apache-2.0",
64
- python_requires=">=3.7",
65
52
  cmdclass={"bdist_wheel": bdist_wheel},
66
- packages=["maturin"],
67
53
  rust_extensions=[RustBin("maturin", args=cargo_args, cargo_manifest_args=["--locked"])],
68
- classifiers=[
69
- "Topic :: Software Development :: Build Tools",
70
- "Programming Language :: Rust",
71
- "Programming Language :: Python :: Implementation :: CPython",
72
- "Programming Language :: Python :: Implementation :: PyPy",
73
- ],
74
- install_requires=["tomli>=1.1.0 ; python_version<'3.11'"],
75
- setup_requires=["setuptools-rust>=1.4.0"],
76
54
  zip_safe=False,
77
55
  )
@@ -9,10 +9,11 @@ use goblin::elf::{sym::STT_FUNC, Elf};
9
9
  use lddtree::Library;
10
10
  use once_cell::sync::Lazy;
11
11
  use regex::Regex;
12
+ use serde::{Deserialize, Serialize};
12
13
  use std::collections::{HashMap, HashSet};
13
- use std::io;
14
14
  use std::io::Read;
15
15
  use std::path::{Path, PathBuf};
16
+ use std::{fmt, io};
16
17
  use thiserror::Error;
17
18
 
18
19
  static IS_LIBPYTHON: Lazy<Regex> =
@@ -54,13 +55,37 @@ pub enum AuditWheelError {
54
55
  #[error("Your library is not {0} compliant because it has unsupported architecture: {1}")]
55
56
  UnsupportedArchitecture(Policy, String),
56
57
  /// This platform tag isn't defined by auditwheel yet
57
- #[error("{0} compatibility policy is not defined by auditwheel yet, pass `--skip-auditwheel` to proceed anyway")]
58
+ #[error("{0} compatibility policy is not defined by auditwheel yet, pass `--auditwheel=skip` to proceed anyway")]
58
59
  UndefinedPolicy(String),
59
60
  /// Failed to analyze external shared library dependencies of the wheel
60
61
  #[error("Failed to analyze external shared library dependencies of the wheel")]
61
62
  DependencyAnalysisError(#[source] lddtree::Error),
62
63
  }
63
64
 
65
+ /// Auditwheel mode
66
+ #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, clap::ValueEnum)]
67
+ #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
68
+ #[serde(rename_all = "lowercase")]
69
+ pub enum AuditWheelMode {
70
+ /// Audit and repair wheel for manylinux compliance
71
+ #[default]
72
+ Repair,
73
+ /// Check wheel for manylinux compliance, but do not repair
74
+ Check,
75
+ /// Don't check for manylinux compliance
76
+ Skip,
77
+ }
78
+
79
+ impl fmt::Display for AuditWheelMode {
80
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
81
+ match self {
82
+ AuditWheelMode::Repair => write!(f, "repair"),
83
+ AuditWheelMode::Check => write!(f, "check"),
84
+ AuditWheelMode::Skip => write!(f, "skip"),
85
+ }
86
+ }
87
+ }
88
+
64
89
  #[derive(Clone, Debug)]
65
90
  pub struct VersionedLibrary {
66
91
  /// library name