TB2J 0.9.4rc0__tar.gz → 0.9.5rc0__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.
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/PKG-INFO +2 -3
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/MAE.py +7 -6
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/abacus_wrapper.py +1 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/gen_exchange_abacus.py +2 -1
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/manager.py +17 -13
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/pauli.py +30 -2
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J.egg-info/PKG-INFO +2 -3
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J.egg-info/requires.txt +1 -2
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/setup.py +3 -3
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/LICENSE +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/README.md +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/Jdownfolder.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/Jtensor.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/Oiju.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/Oiju_epc.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/abacus_api.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/orbital_api.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/stru_api.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/test_density_matrix.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/test_read_HRSR.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/abacus/test_read_stru.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/basis.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/citation.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/contour.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/density_matrix.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/epc.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/exchange.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/exchangeCL2.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/exchange_pert.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/exchange_qspace.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/external/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/external/p_tqdm.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/gpaw_wrapper.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/green.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/greentest.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_exchange.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_multibinit.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_tomsasd.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_txt.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_uppasd.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_exchange/io_vampire.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/io_merge.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/kpoints.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/mathutils/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/mathutils/fermi.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/mathutils/kR_convert.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/mathutils/lowdin.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/mathutils/rotate_spin.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/myTB.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/orbmap.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/pert.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/plot.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/rotate_atoms.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/rotate_siestaDM.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/sisl_wrapper.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/base_parser.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/constants.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/hamiltonian.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/hamiltonian_terms.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/plot.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/qsolver.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/spin_api.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/spin_xml.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/spinham/supercell.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/tensor_rotate.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/utest.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/utils.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/versioninfo.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/wannier/__init__.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/wannier/w90_parser.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J/wannier/w90_tb_parser.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J.egg-info/SOURCES.txt +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J.egg-info/dependency_links.txt +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/TB2J.egg-info/top_level.txt +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_downfold.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_eigen.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_magnon.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_magnon_dos.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_merge.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_rotate.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/TB2J_rotateDM.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/abacus2J.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/siesta2J.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/scripts/wann2J.py +0 -0
- {tb2j-0.9.4rc0 → tb2j-0.9.5rc0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.5rc0
|
4
4
|
Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
|
5
5
|
Author: Xu He
|
6
6
|
Author-email: mailhexu@gmail.com
|
@@ -21,7 +21,6 @@ Requires-Dist: ase>=3.19
|
|
21
21
|
Requires-Dist: tqdm
|
22
22
|
Requires-Dist: pathos
|
23
23
|
Requires-Dist: packaging>=20.0
|
24
|
-
Requires-Dist:
|
25
|
-
Requires-Dist: HamiltonIO>=0.1.4
|
24
|
+
Requires-Dist: HamiltonIO>=0.1.5
|
26
25
|
|
27
26
|
TB2J is a Python package aimed to compute automatically the magnetic interactions (superexchange and Dzyaloshinskii-Moriya) between atoms of magnetic crystals from DFT Hamiltonian based on Wannier functions or Linear combination of atomic orbitals. It uses the Green's function method and take the local rigid spin rotation as a perturbation. The package can take the output from Wannier90, which is interfaced with many density functional theory codes or from codes based on localised orbitals. A minimal user input is needed, which allows for an easily integration into a high-throughput workflows.
|
@@ -11,8 +11,9 @@ import matplotlib.pyplot as plt
|
|
11
11
|
from pathlib import Path
|
12
12
|
from TB2J.mathutils.rotate_spin import spherical_to_cartesian
|
13
13
|
from HamiltonIO.model.occupations import Occupations
|
14
|
-
from TB2J.abacus.abacus_wrapper import AbacusSplitSOCParser
|
15
|
-
from HamiltonIO.
|
14
|
+
#from TB2J.abacus.abacus_wrapper import AbacusSplitSOCParser
|
15
|
+
from HamiltonIO.abacus.abacus_wrapper import AbacusSplitSOCParser
|
16
|
+
from HamiltonIO.siesta import SislParser, SiestaHamiltonian
|
16
17
|
import tqdm
|
17
18
|
|
18
19
|
|
@@ -105,21 +106,21 @@ def abacus_get_MAE(
|
|
105
106
|
with open(outfile, "w") as f:
|
106
107
|
f.write("#theta, psi, energy\n")
|
107
108
|
for theta, psi, e in zip(thetas, psis, es):
|
108
|
-
f.write(f"{theta}, {psi}, {e}\n")
|
109
|
+
f.write(f"{theta:5.3f}, {psi:5.3f}, {e:10.9f}\n")
|
109
110
|
return es
|
110
111
|
|
111
112
|
|
112
113
|
def siesta_get_MAE(fdf_fname, kmesh, thetas, phis, gamma=True, outfile="MAE.txt"):
|
113
114
|
""" """
|
114
|
-
|
115
|
-
model = parser.parse()
|
115
|
+
model= SislParser(fdf_fname=fdf_fname, read_H_soc=True).get_model()
|
116
116
|
ham = MAE(model, kmesh, gamma=gamma)
|
117
117
|
es = ham.get_band_energy_vs_angles(thetas, phis)
|
118
118
|
if outfile:
|
119
119
|
with open(outfile, "w") as f:
|
120
120
|
f.write("#theta, psi, energy\n")
|
121
121
|
for theta, psi, e in zip(thetas, phis, es):
|
122
|
-
f.write(f"{theta}, {psi}, {e}\n")
|
122
|
+
#f.write(f"{theta}, {psi}, {e}\n")
|
123
|
+
f.write(f"{theta:5.3f}, {psi:5.3f}, {e:10.9f}\n")
|
123
124
|
return es
|
124
125
|
|
125
126
|
|
@@ -6,7 +6,8 @@ The main function to compute exchange interaction from abacus data
|
|
6
6
|
|
7
7
|
import os
|
8
8
|
from pathlib import Path
|
9
|
-
from TB2J.abacus.abacus_wrapper import AbacusParser
|
9
|
+
#from TB2J.abacus.abacus_wrapper import AbacusParser
|
10
|
+
from HamiltonIO.abacus import AbacusParser
|
10
11
|
from TB2J.exchange import ExchangeNCL, ExchangeCL
|
11
12
|
from TB2J.exchangeCL2 import ExchangeCL2
|
12
13
|
|
@@ -8,8 +8,10 @@ from TB2J.utils import read_basis, auto_assign_basis_name
|
|
8
8
|
from ase.io import read
|
9
9
|
|
10
10
|
# from TB2J.sisl_wrapper import SislWrapper
|
11
|
+
|
12
|
+
from HamiltonIO.siesta import SislParser
|
11
13
|
try:
|
12
|
-
from HamiltonIO.siesta import
|
14
|
+
from HamiltonIO.siesta import SislParser
|
13
15
|
except ImportError:
|
14
16
|
print(
|
15
17
|
"Cannot import SislWrapper from HamiltonIO.siesta. Please install HamiltonIO first."
|
@@ -285,14 +287,16 @@ def gen_exchange_siesta(
|
|
285
287
|
include_orbs[element] = None
|
286
288
|
magnetic_elements = list(include_orbs.keys())
|
287
289
|
|
288
|
-
fdf = sisl.get_sile(fdf_fname)
|
290
|
+
#fdf = sisl.get_sile(fdf_fname)
|
289
291
|
# geom = fdf.read_geometry()
|
290
|
-
H = fdf.read_hamiltonian()
|
291
|
-
geom = H.geometry
|
292
|
-
|
292
|
+
#H = fdf.read_hamiltonian()
|
293
|
+
#geom = H.geometry
|
294
|
+
parser=SislParser(fdf_fname=fdf_fname, ispin=None, read_H_soc=False)
|
295
|
+
if parser.spin.is_colinear:
|
293
296
|
print("Reading Siesta hamiltonian: colinear spin.")
|
294
|
-
tbmodel_up = SislWrapper(fdf_fname=None, sisl_hamiltonian=H, spin=0, geom=geom)
|
295
|
-
tbmodel_dn = SislWrapper(fdf_fname=None, sisl_hamiltonian=H, spin=1, geom=geom)
|
297
|
+
#tbmodel_up = SislWrapper(fdf_fname=None, sisl_hamiltonian=H, spin=0, geom=geom)
|
298
|
+
#tbmodel_dn = SislWrapper(fdf_fname=None, sisl_hamiltonian=H, spin=1, geom=geom)
|
299
|
+
tbmodel_up, tbmodel_dn = parser.get_model()
|
296
300
|
basis = dict(zip(tbmodel_up.orbs, list(range(tbmodel_up.norb))))
|
297
301
|
print("Starting to calculate exchange.")
|
298
302
|
description = f""" Input from collinear Siesta data.
|
@@ -322,7 +326,7 @@ def gen_exchange_siesta(
|
|
322
326
|
print("\n")
|
323
327
|
print(f"All calculation finsihed. The results are in {output_path} directory.")
|
324
328
|
|
325
|
-
elif
|
329
|
+
elif parser.spin.is_colinear and False:
|
326
330
|
print(
|
327
331
|
"Reading Siesta hamiltonian: colinear spin. Treat as non-colinear. For testing only."
|
328
332
|
)
|
@@ -357,10 +361,10 @@ def gen_exchange_siesta(
|
|
357
361
|
print("\n")
|
358
362
|
print(f"All calculation finsihed. The results are in {output_path} directory.")
|
359
363
|
|
360
|
-
elif
|
364
|
+
elif parser.spin.is_spinorbit or H.spin.is_noncolinear:
|
361
365
|
print("Reading Siesta hamiltonian: non-colinear spin.")
|
362
|
-
|
363
|
-
basis = dict(zip(
|
366
|
+
model = parser.get_model()
|
367
|
+
basis = dict(zip(model.orbs, list(range(model.nbasis))))
|
364
368
|
print("Starting to calculate exchange.")
|
365
369
|
description = f""" Input from non-collinear Siesta data.
|
366
370
|
working directory: {os.getcwd()}
|
@@ -370,8 +374,8 @@ Warning: The DMI component parallel to the spin orientation, the Jani which has
|
|
370
374
|
If you need these component, try to do three calculations with spin along x, y, z, or use structure with z rotated to x, y and z. And then use TB2J_merge.py to get the full set of parameters.
|
371
375
|
\n"""
|
372
376
|
exchange = ExchangeNCL(
|
373
|
-
tbmodels=
|
374
|
-
atoms=
|
377
|
+
tbmodels=model,
|
378
|
+
atoms=model.atoms,
|
375
379
|
basis=basis,
|
376
380
|
efermi=0.0,
|
377
381
|
magnetic_elements=magnetic_elements,
|
@@ -143,11 +143,39 @@ def pauli_block_all(M):
|
|
143
143
|
return MI, Mx, My, Mz
|
144
144
|
|
145
145
|
|
146
|
-
def gather_pauli_blocks(MI, Mx, My, Mz):
|
146
|
+
def gather_pauli_blocks(MI, Mx, My, Mz, coeffs=[1.0, 1.0, 1.0, 1.0]):
|
147
147
|
"""
|
148
148
|
Gather the I, x, y, z component of a matrix.
|
149
149
|
"""
|
150
|
-
|
150
|
+
cI, cx, cy, cz = coeffs
|
151
|
+
return cI*np.kron(MI, s0) + cx*np.kron(Mx, s1) + cy*np.kron(My, s2) + cz*np.kron(Mz, s3)
|
152
|
+
|
153
|
+
def pauli_part(M, coeffs=[1.0, 1.0, 1.0, 1.0]):
|
154
|
+
"""
|
155
|
+
Get the I, x, y, z part of a matrix.
|
156
|
+
"""
|
157
|
+
MI, Mx, My, Mz = pauli_block_all(M)
|
158
|
+
return gather_pauli_blocks(MI, Mx, My, Mz, coeffs=coeffs)
|
159
|
+
|
160
|
+
def chargepart(M):
|
161
|
+
"""
|
162
|
+
Get the charge part of a matrix.
|
163
|
+
"""
|
164
|
+
MI = (M[::2, ::2] + M[1::2, 1::2]) / 2.0
|
165
|
+
Mcopy = np.zeros_like(M)
|
166
|
+
Mcopy[::2, ::2] = MI
|
167
|
+
Mcopy[1::2, 1::2] = MI
|
168
|
+
return Mcopy
|
169
|
+
|
170
|
+
def spinpart(M):
|
171
|
+
"""
|
172
|
+
Get the spin part of a matrix.
|
173
|
+
"""
|
174
|
+
MI = (M[::2, ::2] + M[1::2, 1::2]) / 2.0
|
175
|
+
Mcopy = M.copy()
|
176
|
+
Mcopy[::2, ::2] -= MI
|
177
|
+
Mcopy[1::2, 1::2] -= MI
|
178
|
+
return Mcopy
|
151
179
|
|
152
180
|
|
153
181
|
def test_gather_pauli_blocks():
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: TB2J
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.5rc0
|
4
4
|
Summary: TB2J: First principle to Heisenberg exchange J using tight-binding Green function method
|
5
5
|
Author: Xu He
|
6
6
|
Author-email: mailhexu@gmail.com
|
@@ -21,7 +21,6 @@ Requires-Dist: ase>=3.19
|
|
21
21
|
Requires-Dist: tqdm
|
22
22
|
Requires-Dist: pathos
|
23
23
|
Requires-Dist: packaging>=20.0
|
24
|
-
Requires-Dist:
|
25
|
-
Requires-Dist: HamiltonIO>=0.1.4
|
24
|
+
Requires-Dist: HamiltonIO>=0.1.5
|
26
25
|
|
27
26
|
TB2J is a Python package aimed to compute automatically the magnetic interactions (superexchange and Dzyaloshinskii-Moriya) between atoms of magnetic crystals from DFT Hamiltonian based on Wannier functions or Linear combination of atomic orbitals. It uses the Green's function method and take the local rigid spin rotation as a perturbation. The package can take the output from Wannier90, which is interfaced with many density functional theory codes or from codes based on localised orbitals. A minimal user input is needed, which allows for an easily integration into a high-throughput workflows.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
from setuptools import setup, find_packages
|
3
3
|
|
4
|
-
__version__ = "0.9.
|
4
|
+
__version__ = "0.9.5_pre"
|
5
5
|
|
6
6
|
long_description = """TB2J is a Python package aimed to compute automatically the magnetic interactions (superexchange and Dzyaloshinskii-Moriya) between atoms of magnetic crystals from DFT Hamiltonian based on Wannier functions or Linear combination of atomic orbitals. It uses the Green's function method and take the local rigid spin rotation as a perturbation. The package can take the output from Wannier90, which is interfaced with many density functional theory codes or from codes based on localised orbitals. A minimal user input is needed, which allows for an easily integration into a high-throughput workflows. """
|
7
7
|
|
@@ -34,8 +34,7 @@ setup(
|
|
34
34
|
"tqdm",
|
35
35
|
"pathos",
|
36
36
|
"packaging>=20.0",
|
37
|
-
"
|
38
|
-
"HamiltonIO>=0.1.4",
|
37
|
+
"HamiltonIO>=0.1.5",
|
39
38
|
],
|
40
39
|
classifiers=[
|
41
40
|
"Development Status :: 3 - Alpha",
|
@@ -47,4 +46,5 @@ setup(
|
|
47
46
|
"License :: OSI Approved :: BSD License",
|
48
47
|
],
|
49
48
|
python_requires=">=3.6",
|
49
|
+
|
50
50
|
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|