diff --git a/kwant/solvers/tests/test_mumps.py b/kwant/solvers/tests/test_mumps.py index 9ca695228c0382f6e70b02ffded1956a7c9d615b..b56798e6beb3dea1c13fdbff8753b6f4cb3fe5c4 100644 --- a/kwant/solvers/tests/test_mumps.py +++ b/kwant/solvers/tests/test_mumps.py @@ -114,5 +114,8 @@ def test_wavefunc_ldos_consistency(): _test_sparse.test_wavefunc_ldos_consistency(wave_function, ldos) +# We need to keep testing 'args', but we don't want to see +# all the deprecation warnings in the test logs +@pytest.mark.filterwarnings("ignore:.*'args' parameter") def test_arg_passing(): _test_sparse.test_arg_passing(wave_function, ldos, smatrix) diff --git a/kwant/solvers/tests/test_sparse.py b/kwant/solvers/tests/test_sparse.py index a98f9a44d61859b062b789165422e3e2c8c69649..2ddab9b1cb3c3388b32cb25764d825792670dec2 100644 --- a/kwant/solvers/tests/test_sparse.py +++ b/kwant/solvers/tests/test_sparse.py @@ -6,6 +6,8 @@ # the file AUTHORS.rst at the top-level directory of this distribution and at # http://kwant-project.org/authors. +import pytest + from kwant.solvers.sparse import smatrix, greens_function, ldos, wave_function from . import _test_sparse @@ -60,5 +62,9 @@ def test_ldos(): def test_wavefunc_ldos_consistency(): _test_sparse.test_wavefunc_ldos_consistency(wave_function, ldos) + +# We need to keep testing 'args', but we don't want to see +# all the deprecation warnings in the test logs +@pytest.mark.filterwarnings("ignore:.*'args' parameter") def test_arg_passing(): _test_sparse.test_arg_passing(wave_function, ldos, smatrix) diff --git a/kwant/tests/test_builder.py b/kwant/tests/test_builder.py index cb2cb9c7f0d5dbe968b8f4e65fc22ffbbc0e5751..c6f0874865968079ae24b1e8c8f373fd674acd71 100644 --- a/kwant/tests/test_builder.py +++ b/kwant/tests/test_builder.py @@ -14,6 +14,7 @@ from random import Random import numpy as np import tinyarray as ta +import pytest from pytest import raises, warns from numpy.testing import assert_almost_equal @@ -1145,12 +1146,14 @@ def test_discrete_symmetries(): syst[lat(1)] = np.identity(2) syst[lat2(1)] = 1 - sym = syst.finalized().discrete_symmetry(args=[0]) + params=dict(p=0) + + sym = syst.finalized().discrete_symmetry(params=params) for proj, should_be in zip(sym.projectors, np.identity(3)): assert np.allclose(proj.toarray(), should_be.reshape((3, 1))) assert np.allclose(sym.time_reversal.toarray(), np.identity(3)) syst.conservation_law = lambda site, p: cons_law[site.family] - sym = syst.finalized().discrete_symmetry(args=[0]) + sym = syst.finalized().discrete_symmetry(params=params) for proj, should_be in zip(sym.projectors, np.identity(3)): assert np.allclose(proj.toarray(), should_be.reshape((-1, 1))) @@ -1186,8 +1189,10 @@ def test_discrete_symmetries(): assert np.allclose(proj.toarray(), [[1]]) +# We need to keep testing 'args', but we don't want to see +# all the deprecation warnings in the test logs +@pytest.mark.filterwarnings("ignore:.*'args' parameter") def test_argument_passing(): - chain = kwant.lattice.chain() # Test for passing parameters to hamiltonian matrix elements diff --git a/kwant/tests/test_comprehensive.py b/kwant/tests/test_comprehensive.py index 088aefbb6cf68856dba6a2e64cc8fdf4616fc4d7..9989bf59fca3d7f9d76a2f0d862e064cdca26316 100644 --- a/kwant/tests/test_comprehensive.py +++ b/kwant/tests/test_comprehensive.py @@ -48,8 +48,8 @@ def test_qhe(W=16, L=8): ((3.2, 3.7), 2, 1e-3), ((5.2, 5.5), 3, 1e-1)]: for r_phi in r_phis: - args = (1.0 / r_phi, "") - pc = syst.precalculate(1.0, args, what='all') - for result in [kwant.smatrix(pc, 1, args), - kwant.solvers.default.greens_function(pc, 1, args)]: + params = dict(phi=1.0 / r_phi, salt="") + pc = syst.precalculate(1.0, params=params, what='all') + for result in [kwant.smatrix(pc, 1, params=params), + kwant.solvers.default.greens_function(pc, 1, params=params)]: assert abs(T_nominal - result.transmission(1, 0)) < max_err diff --git a/kwant/tests/test_operator.py b/kwant/tests/test_operator.py index cc76209e3b058243ddcb4f00929942737a91117c..6eb0e631a3d0794846bbd078898a27b4c829cab4 100644 --- a/kwant/tests/test_operator.py +++ b/kwant/tests/test_operator.py @@ -156,22 +156,22 @@ def test_operator_construction(): A(fsyst, sum=True).sum == True -def _test(A, bra, ket=None, per_el_val=None, reduced_val=None, args=()): +def _test(A, bra, ket=None, per_el_val=None, reduced_val=None, params=None): if per_el_val is not None: - val = A(bra, ket, args=args) + val = A(bra, ket, params=params) assert np.allclose(val, per_el_val) # with bound args - val = A.bind(args)(bra, ket) + val = A.bind(params=params)(bra, ket) assert np.allclose(val, per_el_val) # test that inner products give the same thing ket = bra if ket is None else ket - act_val = np.dot(bra.conj(), A.act(ket, args=args)) - inner_val = np.sum(A(bra, ket, args=args)) + act_val = np.dot(bra.conj(), A.act(ket, params=params)) + inner_val = np.sum(A(bra, ket, params=params)) # check also when sum is done internally by operator try: sum_reset = A.sum A.sum = True - sum_inner_val = A(bra, ket, args=args) + sum_inner_val = A(bra, ket, params=params) assert inner_val == sum_inner_val finally: A.sum = sum_reset @@ -300,22 +300,22 @@ def test_opservables_spin(): syst.attach_lead(lead) syst.attach_lead(lead.reversed()) fsyst = syst.finalized() - args = (0.1,) - down, up = kwant.wave_function(fsyst, energy=1., args=args)(0) + params = dict(B=0.1) + down, up = kwant.wave_function(fsyst, energy=1., params=params)(0) x_hoppings = kwant.builder.HoppingKind((1,), lat) spin_current_z = ops.Current(fsyst, sigmaz, where=x_hoppings(syst)) - _test(spin_current_z, up, args=args, per_el_val=1) - _test(spin_current_z, down, args=args, per_el_val=-1) + _test(spin_current_z, up, params=params, per_el_val=1) + _test(spin_current_z, down, params=params, per_el_val=-1) # calculate spin_x torque spin_torque_x = ops.Source(fsyst, sigmax, where=[lat(L//2)]) i = fsyst.id_by_site[lat(L//2)] psi = up[2*i:2*(i+1)] + down[2*i:2*(i+1)] - H_ii = onsite(None, *args) + H_ii = onsite(None, **params) K = np.dot(H_ii, sigmax) - np.dot(sigmax, H_ii) expect = 1j * ft.reduce(np.dot, (psi.conj(), K, psi)) - _test(spin_torque_x, up+down, args=args, reduced_val=expect) + _test(spin_torque_x, up+down, params=params, reduced_val=expect) def test_opservables_gauged(): @@ -397,17 +397,20 @@ def test_tocoo(): # No accidental transpose. syst = kwant.Builder() lat2 = kwant.lattice.chain(norbs=2) - syst[lat2(0)] = lambda site, paramerer: np.eye(2) + syst[lat2(0)] = lambda site, p: np.eye(2) syst = syst.finalized() op = ops.Density(syst, [[1, 1], [0, 1]], check_hermiticity=False) assert np.all(op.tocoo().toarray() == [[1, 1], [0, 1]]) op = ops.Density(syst, lambda site, p: [[1, 1], [0, 1]], check_hermiticity=False) - op = op.bind(args=(1,)) + op = op.bind(params=dict(p=1)) raises(ValueError, op.tocoo, [1]) +# We need to keep testing 'args', but we don't want to see +# all the deprecation warnings in the test logs +@pytest.mark.filterwarnings("ignore:.*'args' parameter") @pytest.mark.parametrize("A", opservables) def test_arg_passing(A): lat1 = kwant.lattice.chain(norbs=1) diff --git a/kwant/tests/test_wraparound.py b/kwant/tests/test_wraparound.py index 9074e3e0f763d65f64b3b4a539a8ba373ff48761..f9b536ec3ac696e955c179d0a236f5d4d08c68c2 100644 --- a/kwant/tests/test_wraparound.py +++ b/kwant/tests/test_wraparound.py @@ -41,12 +41,13 @@ def test_consistence_with_bands(kx=1.9, nkys=31): wa_keep_1 = wraparound(syst, keep=1).finalized() wa_keep_none = wraparound(syst).finalized() - bands = kwant.physics.Bands(wa_keep_1, (kx,)) + bands = kwant.physics.Bands(wa_keep_1, params=dict(k_x=kx)) energies_a = [bands(ky) for ky in kys] energies_b = [] for ky in kys: - H = wa_keep_none.hamiltonian_submatrix((kx, ky), sparse=False) + params = dict(k_x=kx, k_y=ky) + H = wa_keep_none.hamiltonian_submatrix(params=params, sparse=False) evs = np.sort(np.linalg.eigvalsh(H).real) energies_b.append(evs) @@ -63,10 +64,14 @@ def test_opposite_hoppings(): syst[lat(-1, 0), lat(-1, -1)] = val fsyst = wraparound(syst).finalized() - np.testing.assert_almost_equal(fsyst.hamiltonian_submatrix([0]), 0) + params = dict(k_x=0) + np.testing.assert_almost_equal( + fsyst.hamiltonian_submatrix(params=params), + 0) def test_value_types(k=(-1.1, 0.5), E=2, t=1): + k = dict(zip(('k_x', 'k_y', 'k_z'), k)) sym_extents = [1, 2, 3] lattices = [kwant.lattice.honeycomb(), kwant.lattice.square()] lat_syms = [ @@ -75,7 +80,7 @@ def test_value_types(k=(-1.1, 0.5), E=2, t=1): ] for lat, sym in lat_syms: syst = wraparound(_simple_syst(lat, E, t, sym)).finalized() - H = syst.hamiltonian_submatrix(k, sparse=False) + H = syst.hamiltonian_submatrix(params=k, sparse=False) for E1, t1 in [(float(E), float(t)), (np.array([[E]], float), np.array([[t]], float)), (ta.array([[E]], float), ta.array([[t]], float))]: @@ -84,7 +89,7 @@ def test_value_types(k=(-1.1, 0.5), E=2, t=1): for E2 in [E1, lambda a: E1]: for t2 in [t1, lambda a, b: t1]: syst = wraparound(_simple_syst(lat, E2, t2, sym)).finalized() - H_alt = syst.hamiltonian_submatrix(k, sparse=False) + H_alt = syst.hamiltonian_submatrix(params=k, sparse=False) np.testing.assert_equal(H_alt, H) # test when Hamiltonian value functions take extra parameters and # have incompatible signatures (must be passed with 'params') @@ -98,7 +103,7 @@ def test_value_types(k=(-1.1, 0.5), E=2, t=1): lambda a, b, t, E: t, lambda a, b, E, t: t, ] - params = dict(E=E1, t=t1, k_x=k[0], k_y=k[1]) + params = dict(E=E1, t=t1, **k) for E2, t2 in itertools.product(onsites, hoppings): syst = wraparound(_simple_syst(lat, E2, t2, sym)).finalized() H_alt = syst.hamiltonian_submatrix(params=params, sparse=False) @@ -275,15 +280,17 @@ def test_fd_mismatch(): def spectrum(syst, keep): syst = wraparound(syst, keep=keep).finalized() + ks = ('k_x', 'k_y', 'k_z') if keep is None: def _(*args): - return np.linalg.eigvalsh(syst.hamiltonian_submatrix(args=args)) + params = dict(zip(ks, args)) + return np.linalg.eigvalsh( + syst.hamiltonian_submatrix(params=params)) else: def _(*args): - args = list(args) - kext = args.pop(keep) - kint = args - B = kwant.physics.Bands(syst, args=kint) + params = dict(zip(ks, args)) + kext = params.pop(ks[keep]) + B = kwant.physics.Bands(syst, params=params) return B(kext) return _ @@ -348,7 +355,8 @@ def test_fd_mismatch(): finitewrapped.fill(wrapped, shape, start=np.zeros(3)); sysf = finitewrapped.finalized() - spectrum1 = [np.linalg.eigvalsh(sysf.hamiltonian_submatrix(args=(k, 0))) + spectrum1 = [np.linalg.eigvalsh( + sysf.hamiltonian_submatrix(params=dict(k_x=k, k_y=0))) for k in np.linspace(-np.pi, np.pi, 5)] # Second choice: doubled UC with third translation purely in z direction @@ -367,7 +375,8 @@ def test_fd_mismatch(): finitewrapped.fill(wrapped, shape, start=np.zeros(3)); sysf = finitewrapped.finalized() - spectrum2 = [np.linalg.eigvalsh(sysf.hamiltonian_submatrix(args=(k, 0))) + spectrum2 = [np.linalg.eigvalsh( + sysf.hamiltonian_submatrix(params=dict(k_x=k, k_y=0))) for k in np.linspace(-np.pi, np.pi, 5)] assert np.allclose(spectrum1, spectrum2)