qupled 1.3.2__cp312-cp312-macosx_14_0_arm64.whl

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.
qupled/stls.py ADDED
@@ -0,0 +1,94 @@
1
+ from __future__ import annotations
2
+
3
+ import numpy as np
4
+
5
+ from . import hf
6
+ from . import native
7
+ from . import output
8
+ from . import rpa
9
+
10
+
11
+ class Stls(rpa.Rpa):
12
+ """
13
+ Class used to solve the Stls scheme.
14
+ """
15
+
16
+ def __init__(self):
17
+ super().__init__()
18
+ self.results: Result = Result()
19
+ # Undocumented properties
20
+ self.native_scheme_cls = native.Stls
21
+ self.native_inputs_cls = native.StlsInput
22
+
23
+ @staticmethod
24
+ def get_initial_guess(run_id: int, database_name: str | None = None) -> Guess:
25
+ """Constructs an initial guess object by extracting the information from a database.
26
+
27
+ Args:
28
+ run_id: The unique identifier for the run whose data is to be retrieved.
29
+ database_name: The name of the database to query.
30
+ If None, the default database will be used.
31
+
32
+ Returns:
33
+ An instance of Guess containing the initial guess data.
34
+ """
35
+ names = ["wvg", "ssf"]
36
+ data = output.DataBase.read_results(run_id, database_name, names)
37
+ return Guess(data[names[0]], data[names[1]])
38
+
39
+
40
+ class Input(rpa.Input):
41
+ """
42
+ Class used to manage the input for the :obj:`qupled.stls.Stls` class.
43
+ """
44
+
45
+ def __init__(self, coupling: float, degeneracy: float):
46
+ super().__init__(coupling, degeneracy)
47
+ self.error: float = 1.0e-5
48
+ """Minimum error for convergence. Default = ``1.0e-5``"""
49
+ self.mixing: float = 1.0
50
+ """Mixing parameter. Default = ``1.0``"""
51
+ self.iterations: int = 1000
52
+ """Maximum number of iterations. Default = ``1000``"""
53
+ self.guess: Guess = Guess()
54
+ """Initial guess. Default = ``stls.Guess()``"""
55
+ # Undocumented default values
56
+ self.theory: str = "STLS"
57
+
58
+
59
+ class Result(hf.Result):
60
+ """
61
+ Class used to store the results for the :obj:`qupled.stls.Stls` class.
62
+ """
63
+
64
+ def __init__(self):
65
+ super().__init__()
66
+ self.error: float = None
67
+ """Residual error in the solution"""
68
+
69
+
70
+ class Guess:
71
+
72
+ def __init__(self, wvg: np.ndarray = None, ssf: np.ndarray = None):
73
+ self.wvg = wvg
74
+ """ Wave-vector grid. Default = ``None``"""
75
+ self.ssf = ssf
76
+ """ Static structure factor. Default = ``None``"""
77
+
78
+ def to_native(self) -> native.Guess:
79
+ """
80
+ Converts the current object to a native `Guess` object.
81
+
82
+ This method iterates over the attributes of the current object and
83
+ assigns their values to a new `Guess` object. If an attribute's
84
+ value is `None`, it is replaced with an empty NumPy array.
85
+
86
+ Returns:
87
+ native.StlsGuess: A new instance of `Guess` with attributes
88
+ copied from the current object.
89
+ """
90
+ native_guess = native.Guess()
91
+ for attr, value in self.__dict__.items():
92
+ if value is not None:
93
+ setattr(native_guess, attr, value)
94
+ return native_guess
qupled/stlsiet.py ADDED
@@ -0,0 +1,97 @@
1
+ from __future__ import annotations
2
+
3
+ import numpy as np
4
+
5
+ from . import native
6
+ from . import output
7
+ from . import stls
8
+
9
+
10
+ class StlsIet(stls.Stls):
11
+ """
12
+ Class used to solve the StlsIet schemes.
13
+ """
14
+
15
+ def __init__(self):
16
+ super().__init__()
17
+ self.results: Result = Result()
18
+ self.native_scheme_cls = native.StlsIet
19
+ self.native_inputs_cls = native.StlsIetInput
20
+
21
+ @staticmethod
22
+ def get_initial_guess(run_id: str, database_name: str | None = None) -> Guess:
23
+ """
24
+ Retrieves the initial guess for a computation based on a specific run ID
25
+ from a database.
26
+
27
+ Args:
28
+ run_id: The unique identifier for the run whose data is to be retrieved.
29
+ database_name: The name of the database to query.
30
+ If None, the default database is used.
31
+
32
+ Returns:
33
+ Guess: An object containing the initial guess values, including results
34
+ and inputs extracted from the database.
35
+ """
36
+ names = ["wvg", "ssf", "lfc"]
37
+ results = output.DataBase.read_results(run_id, database_name, names)
38
+ return Guess(
39
+ results[names[0]],
40
+ results[names[1]],
41
+ results[names[2]],
42
+ )
43
+
44
+
45
+ class Input(stls.Input):
46
+ """
47
+ Class used to manage the input for the :obj:`qupled.stlsiet.StlsIet` class.
48
+ Accepted theories: ``STLS-HNC``, ``STLS-IOI`` and ``STLS-LCT``.
49
+ """
50
+
51
+ def __init__(self, coupling: float, degeneracy: float, theory: str):
52
+ super().__init__(coupling, degeneracy)
53
+ if theory not in {"STLS-HNC", "STLS-IOI", "STLS-LCT"}:
54
+ raise ValueError("Invalid dielectric theory")
55
+ self.theory = theory
56
+ self.mapping = "standard"
57
+ r"""
58
+ Mapping for the classical-to-quantum coupling parameter
59
+ :math:`\Gamma` used in the iet schemes. Allowed options include:
60
+
61
+ - standard: :math:`\Gamma \propto \Theta^{-1}`
62
+
63
+ - sqrt: :math:`\Gamma \propto (1 + \Theta)^{-1/2}`
64
+
65
+ - linear: :math:`\Gamma \propto (1 + \Theta)^{-1}`
66
+
67
+ where :math:`\Theta` is the degeneracy parameter. Far from the ground state
68
+ (i.e. :math:`\Theta\gg1`) all mappings lead identical results, but at
69
+ the ground state they can differ significantly (the standard
70
+ mapping diverges). Default = ``standard``.
71
+ """
72
+ self.guess: Guess = Guess()
73
+ """Initial guess. Default = ``stlsiet.Guess()``"""
74
+
75
+
76
+ class Result(stls.Result):
77
+ """
78
+ Class used to store the results for the :obj:`qupled.stlsiet.StlsIet` class.
79
+ """
80
+
81
+ def __init__(self):
82
+ super().__init__()
83
+ self.bf: np.ndarray = None
84
+ """Bridge function adder"""
85
+
86
+
87
+ class Guess(stls.Guess):
88
+
89
+ def __init__(
90
+ self,
91
+ wvg: np.ndarray = None,
92
+ ssf: np.ndarray = None,
93
+ lfc: np.ndarray = None,
94
+ ):
95
+ super().__init__(wvg, ssf)
96
+ self.lfc = lfc
97
+ """ Local field correction. Default = ``None``"""
qupled/vsstls.py ADDED
@@ -0,0 +1,203 @@
1
+ from __future__ import annotations
2
+
3
+ import numpy as np
4
+
5
+ from . import native
6
+ from . import output
7
+ from . import stls
8
+
9
+
10
+ class VSStls(stls.Stls):
11
+ """
12
+ Class used to solve the VSStls scheme.
13
+ """
14
+
15
+ def __init__(self):
16
+ super().__init__()
17
+ self.results: Result = Result()
18
+ # Undocumented properties
19
+ self.native_scheme_cls = native.VSStls
20
+ self.native_inputs_cls = native.VSStlsInput
21
+
22
+ def compute(self, inputs: Input):
23
+ """
24
+ Solves the scheme and saves the results.
25
+
26
+ Args:
27
+ inputs: Input parameters.
28
+ """
29
+ self._fill_free_energy_integrand(inputs)
30
+ super().compute(inputs)
31
+
32
+ def _fill_free_energy_integrand(self, inputs: Input):
33
+ """
34
+ Fills the free energy integrand by computing missing state points for a given input.
35
+
36
+ This method iterates over the missing state points (coupling values) for the given input,
37
+ computes the required data for each coupling value, and updates the input data accordingly.
38
+ After processing, it restores the original coupling value in the input.
39
+
40
+ Args:
41
+ inputs: Input parameters.
42
+
43
+ Behavior:
44
+ - Identifies the missing state points (coupling values) that need to be computed.
45
+ - For each missing coupling value:
46
+ - Prints a message indicating the current computation.
47
+ - Updates the input coupling value to the current coupling.
48
+ - Performs the computation using the `compute` method.
49
+ - Updates the input data with the results of the computation.
50
+ - Restores the original target coupling value in the input after processing.
51
+ """
52
+ target_coupling = inputs.coupling
53
+ missing_state_points = self._get_missing_state_points(inputs)
54
+ do_subcall = len(missing_state_points) > 0
55
+ for coupling in missing_state_points:
56
+ print("---------------------------------------------------------------")
57
+ print(f"Subcall: solving {inputs.theory} scheme for rs = {coupling:.5f}")
58
+ inputs.coupling = coupling
59
+ self.compute(inputs)
60
+ self._update_input_data(inputs)
61
+ if do_subcall:
62
+ print("---------------------------------------------------------------")
63
+ print("Subcalls completed.")
64
+ inputs.coupling = target_coupling
65
+
66
+ @staticmethod
67
+ def _get_missing_state_points(inputs: Input) -> np.ndarray:
68
+ """
69
+ Calculate the missing state points in a grid based on the expected and actual values.
70
+
71
+ This function determines the points in the expected grid that are not present
72
+ in the actual grid of the free energy integrand. The precision of the comparison
73
+ is determined by the resolution of the coupling parameter.
74
+
75
+ Args:
76
+ inputs (Input): The input parameters.
77
+
78
+ Returns:
79
+ np.ndarray: An array of missing state points in the grid. If the actual grid
80
+ is `None`, the function returns the entire expected grid.
81
+ """
82
+ rs = inputs.coupling
83
+ drs = inputs.coupling_resolution
84
+ expected_grid = np.arange(drs, rs - 0.1 * drs, 3 * drs)
85
+ actual_grid = inputs.free_energy_integrand.grid
86
+ precision = int(np.abs(np.log10(drs)))
87
+ return (
88
+ np.setdiff1d(
89
+ np.round(expected_grid, precision), np.round(actual_grid, precision)
90
+ )
91
+ if actual_grid is not None
92
+ else expected_grid
93
+ )
94
+
95
+ def _update_input_data(self, inputs: Input):
96
+ """
97
+ Updates the input data with a free energy integrand object.
98
+
99
+ This method creates a `FreeEnergyIntegrand` instance using the results
100
+ stored in the current object and assigns it to the `free_energy_integrand`
101
+ attribute of the provided `inputs` object.
102
+
103
+ Args:
104
+ inputs: Input parameters.
105
+ """
106
+ free_energy_integrand = FreeEnergyIntegrand(
107
+ self.results.free_energy_grid, self.results.free_energy_integrand
108
+ )
109
+ inputs.free_energy_integrand = free_energy_integrand
110
+
111
+ # Get the free energy integrand from database
112
+ @staticmethod
113
+ def get_free_energy_integrand(
114
+ run_id: int, database_name: str | None = None
115
+ ) -> FreeEnergyIntegrand:
116
+ """
117
+ Retrieve the free energy integrand for a given run ID from the database.
118
+
119
+ Args:
120
+ run_id: The unique identifier for the run whose data is to be retrieved.
121
+ database_name: The name of the database to query.
122
+ If None, the default database will be used.
123
+
124
+ Returns:
125
+ native.FreeEnergyIntegrand: An object containing the free energy grid,
126
+ and integrand values retrieved from the database.
127
+ """
128
+ names = ["free_energy_grid", "free_energy_integrand"]
129
+ data = output.DataBase.read_results(run_id, database_name, names)
130
+ return FreeEnergyIntegrand(data[names[0]], data[names[1]])
131
+
132
+
133
+ # Input class
134
+ class Input(stls.Input):
135
+ """
136
+ Class used to manage the input for the :obj:`qupled.vsstls.VSStls` class.
137
+ """
138
+
139
+ def __init__(self, coupling: float, degeneracy: float):
140
+ super().__init__(coupling, degeneracy)
141
+ self.alpha: list[float] = [0.5, 1.0]
142
+ """Initial guess for the free parameter. Default = ``[0.5, 1.0]``"""
143
+ self.coupling_resolution: float = 0.1
144
+ """Resolution of the coupling parameter grid. Default = ``0.1``"""
145
+ self.degeneracy_resolution: float = 0.1
146
+ """Resolution of the degeneracy parameter grid. Default = ``0.1``"""
147
+ self.error_alpha: float = 1.0e-3
148
+ """Minimum error for convergence in the free parameter. Default = ``1.0e-3``"""
149
+ self.iterations_alpha: int = 50
150
+ """Maximum number of iterations to determine the free parameter. Default = ``50``"""
151
+ self.free_energy_integrand: FreeEnergyIntegrand = FreeEnergyIntegrand()
152
+ """Pre-computed free energy integrand."""
153
+ self.threads: int = 9
154
+ """Number of threads. Default = ``9``"""
155
+ # Undocumented default values
156
+ self.theory: str = "VSSTLS"
157
+
158
+
159
+ class Result(stls.Result):
160
+ """
161
+ Class used to store the results for the :obj:`qupled.vsstls.VSStls` class.
162
+ """
163
+
164
+ def __init__(self):
165
+ super().__init__()
166
+ self.free_energy_grid = None
167
+ """Free energy grid"""
168
+ self.free_energy_integrand = None
169
+ """Free energy integrand"""
170
+ self.alpha = None
171
+ """Free parameter"""
172
+
173
+
174
+ class FreeEnergyIntegrand:
175
+
176
+ def __init__(
177
+ self,
178
+ grid: np.ndarray | None = None,
179
+ integrand: np.ndarray | None = None,
180
+ ):
181
+ self.grid = grid
182
+ """ Coupling parameter grid. Default = ``None``"""
183
+ self.integrand = integrand
184
+ """ Free energy integrand. Default = ``None``"""
185
+
186
+ def to_native(self) -> native.FreeEnergyIntegrand:
187
+ """
188
+ Converts the current object to a native `FreeEnergyIntegrand` instance.
189
+
190
+ This method creates an instance of `native.FreeEnergyIntegrand` and maps
191
+ the attributes of the current object to the corresponding attributes of
192
+ the native instance. If an attribute's value is `None`, it is replaced
193
+ with an empty NumPy array.
194
+
195
+ Returns:
196
+ native.FreeEnergyIntegrand: A new instance of `FreeEnergyIntegrand`
197
+ with attributes copied from the current object.
198
+ """
199
+ native_guess = native.FreeEnergyIntegrand()
200
+ for attr, value in self.__dict__.items():
201
+ if value is not None:
202
+ setattr(native_guess, attr, value)
203
+ return native_guess
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: qupled
3
+ Version: 1.3.2
4
+ Summary: qupled: a package to investigate quantum plasmas via the dielectric formalism
5
+ Author-email: Federico Lucco Castello <federico.luccocastello@gmail.com>
6
+ License-Expression: GPL-3.0-or-later
7
+ Classifier: Programming Language :: Python :: 3.10
8
+ Classifier: Operating System :: MacOS
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Requires-Python: <3.14,>=3.10
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: blosc2~=3.2
14
+ Requires-Dist: matplotlib~=3.7
15
+ Requires-Dist: numpy<2.0
16
+ Requires-Dist: SQLAlchemy~=2.0
17
+ Provides-Extra: testing
18
+ Requires-Dist: pytest~=8.0; extra == "testing"
19
+ Requires-Dist: pytest-mock~=3.12; extra == "testing"
20
+ Provides-Extra: docs
21
+ Requires-Dist: sphinx-rtd-theme~=2.0.0; extra == "docs"
22
+ Requires-Dist: sphinxcontrib-applehelp~=2.0.0; extra == "docs"
23
+ Requires-Dist: sphinxcontrib-devhelp~=2.0.0; extra == "docs"
24
+ Requires-Dist: sphinxcontrib-htmlhelp~=2.1.0; extra == "docs"
25
+ Requires-Dist: sphinxcontrib-jquery~=4.1; extra == "docs"
26
+ Requires-Dist: sphinxcontrib-jsmath~=1.0.1; extra == "docs"
27
+ Requires-Dist: sphinxcontrib-qthelp~=2.0.0; extra == "docs"
28
+ Requires-Dist: sphinxcontrib-serializinghtml~=2.0.0; extra == "docs"
29
+ Dynamic: license-file
30
+
31
+ # Qupled
32
+
33
+ Qupled is a Python package designed for calculating the properties of quantum plasmas using the dielectric formalism. By combining a straightforward Python interface with the speed of C++, it allows for efficient and accurate computations of quantum plasma properties.
34
+
35
+ ![](https://github.com/fedluc/qupled/blob/master/examples/readme/qupled_animation_light.svg#gh-light-mode-only)
36
+ ![](https://github.com/fedluc/qupled/blob/master/examples/readme/qupled_animation_dark.svg#gh-dark-mode-only)
37
+
38
+ ## Status
39
+ [![Build & Test](https://github.com/fedluc/qupled/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/fedluc/qupled/actions/workflows/build-and-test.yml)
40
+ [![Code Formatting](https://github.com/fedluc/qupled/actions/workflows/formatting.yml/badge.svg)](https://github.com/fedluc/qupled/actions/workflows/formatting.yml)
41
+ [![Docs](https://img.shields.io/readthedocs/qupled/latest.svg?color=blue&style=flat)](https://qupled.readthedocs.io/en/latest/)
42
+ ![PyPI version](https://img.shields.io/pypi/v/qupled.svg?color=blue&label=PyPI&style=flat)
43
+ ![OS](https://img.shields.io/badge/OS-macOS%20%7C%20Linux-blue?style=flat-square)
44
+
45
+
46
+ ## Running
47
+
48
+ After [installation](https://qupled.readthedocs.io/en/latest/introduction.html#installing-qupled) qupled can be used as a regular Python package.
49
+
50
+ ```python
51
+ # Solve the stls dielectric scheme for coupling = 10 and degeneracy 1.0
52
+ import qupled.stls as stls
53
+ inputs = stls.Input(10.0, 1.0)
54
+ stls.Stls().compute(inputs)
55
+ ```
56
+
57
+ ## Documentation
58
+
59
+ More detailed information on the package together with a list of examples is available in the [documentation](http://qupled.readthedocs.io/).
60
+
61
+ ## Publications
62
+
63
+ Qupled has been used in the following publications:
64
+
65
+ <ol>
66
+ <li>
67
+ <a href="https://onlinelibrary.wiley.com/doi/10.1002/ctpp.70014">Tolias, P., Kalkavouras, F., Dornheim, T. &#38; Lucco Castello, F. (2025). Dynamic Properties of the Warm Dense Uniform Electron Gas With the qSTLS Dielectric Scheme. <i>Contributions to Plasma Physics</i>, 0:e70014</a>
68
+ </li>
69
+ <li>
70
+ <a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.109.125134">Tolias, P., Lucco Castello, F., Kalkavouras, F., &#38; Dornheim, T. (2024). Revisiting the Vashishta-Singwi dielectric scheme for the warm dense uniform electron fluid. <i>Physical Review B</i>, <i>109</i>(12)</a>
71
+ </li>
72
+ <li>
73
+ <a href="https://pubs.aip.org/aip/jcp/article/158/14/141102/2877795/Quantum-version-of-the-integral-equation-theory">Tolias, P., Lucco Castello, F., &#38; Dornheim, T. (2023). Quantum version of the integral equation theory-based dielectric scheme for strongly coupled electron liquids. <i>The Journal of Chemical Physics</i>, <i>158</i>(14)</a>
74
+ </li>
75
+ <li>
76
+ <a href="https://iopscience.iop.org/article/10.1209/0295-5075/ac7166/meta">Lucco Castello, F., Tolias, P., &#38; Dornheim, T. (2022). Classical bridge functions in classical and quantum plasma liquids. <i>Europhysics Letters</i>, <i>138</i>(4)</a>
77
+ </li>
78
+ <li>
79
+ <a href="https://pubs.aip.org/aip/jcp/article/155/13/134115/353165/Integral-equation-theory-based-dielectric-scheme">Tolias, P., Lucco Castello, F., &#38; Dornheim, T. (2021). Integral equation theory based dielectric scheme for strongly coupled electron liquids. <i>The Journal of Chemical Physics</i>, <i>155</i>(13)</a>
80
+ </li>
81
+ </ol>
@@ -0,0 +1,24 @@
1
+ qupled-1.3.2.dist-info/RECORD,,
2
+ qupled-1.3.2.dist-info/WHEEL,sha256=VrhWOWJdu4wN9IKhAFBqWPMo6yuww-SFg9GbWc0qbmI,136
3
+ qupled-1.3.2.dist-info/top_level.txt,sha256=HLJfvnCPZQVptCRuekWA_3Z98SMkCNCXViGiGh8VenA,7
4
+ qupled-1.3.2.dist-info/METADATA,sha256=b6IvBcRlZAtzvKpYTbKw6EpASENUMvRTXQNlrDjF4wI,4559
5
+ qupled-1.3.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
6
+ qupled/qstls.py,sha256=m-8_81ZHzV9VKkckACGASqF0rx38ho3hSibK9FbVgXs,2465
7
+ qupled/native.cpython-312-darwin.so,sha256=4N1Qg9hZJLqhmn_2dh9xQ9cI-YEd9JJ1_WmW_AUOxsQ,691696
8
+ qupled/rpa.py,sha256=RQ5wUTwoRnDqRzWO877OHgG2rcgYbSGBqn0PR3E4Uxw,613
9
+ qupled/database.py,sha256=IDgY6uvxdg5f5SVxnvWzgeB5Zi7mR6tHEFnU0m3Y_xI,25027
10
+ qupled/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
11
+ qupled/stlsiet.py,sha256=pYDCKh4wwfOvw7BanjfspNMAVp2xj4b2h09pm65jLgk,2982
12
+ qupled/qstlsiet.py,sha256=W_N7HQ4538HKR37CxJpxfYlqGM-rarFbVmRkP60-N90,1112
13
+ qupled/esa.py,sha256=ksFZJ3u7VF3OxffxAR7aGjZp8Zy2SeNQ8r2xFjjqQwc,613
14
+ qupled/mpi.py,sha256=Gbu6OlHvgA4q54pdIxFS16vNTIiKuF9o7aMuXka0tlg,1892
15
+ qupled/stls.py,sha256=B843hdgNAVr761Fo2lmzJSmdsPCu2LIoASNSh2UeKg4,2951
16
+ qupled/vsstls.py,sha256=y83EPv_v3DLVyydWi2IPnzYPOP3qUKzrvc9MrwxIMgU,7723
17
+ qupled/qvsstls.py,sha256=Jn98Ht9sK-dYIYvxhGfM5s-NIktjQcYGc7UD01hw0_8,1748
18
+ qupled/output.py,sha256=VP_7oKPuULYa0UB-wX_J_cLnGd2mZZxrYeeTpNY-iwE,3602
19
+ qupled/hf.py,sha256=2hKcYny6iLvVs5-M1NtmU6QAg_-u7RWZgS46OnhcWkc,10082
20
+ qupled/.dylibs/libgsl.28.dylib,sha256=rcTB771UsiEC1W_E5mVMYKo6G91p0OD5GaUssM8gfk8,2241424
21
+ qupled/.dylibs/libomp.dylib,sha256=Ic_m8yVNxvjHQ-51C9MX9Bzl0wJAEsBdkx4V0_P_z7Y,735616
22
+ qupled/.dylibs/libgslcblas.0.dylib,sha256=3ATUzchJ3MFYqtB5KC07P7gu8g-GTlQ62fUwbNrZqMY,239760
23
+ qupled/.dylibs/libSQLiteCpp.0.dylib,sha256=e2Cq30wVtP5ED40t6Rjj3mp1DfYh34mEO_fCsdt6QlQ,94368
24
+ qupled/.dylibs/libsqlite3.3.50.1.dylib,sha256=Ha5JC9TLmJglwOd4iBR8PACdcEZ5DW_iJwfNAGWQHBw,1241152
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp312-cp312-macosx_14_0_arm64
5
+ Generator: delocate 0.13.0
6
+