1{ lib
2, stdenv
3, buildPythonPackage
4, fetchPypi
5, fetchpatch
6, python
7, pythonAtLeast
8, scripttest
9, pytz
10, pbr
11, tempita
12, decorator
13, sqlalchemy
14, six
15, sqlparse
16, testrepository
17}:
18
19buildPythonPackage rec {
20 pname = "sqlalchemy-migrate";
21 version = "0.13.0";
22
23 # using deprecated inspect.getargspec function
24 # https://bugs.launchpad.net/sqlalchemy-migrate/+bug/2003619
25 disabled = pythonAtLeast "3.11";
26
27 src = fetchPypi {
28 inherit pname version;
29 sha256 = "1y0lcqii7b4vp7yh9dyxrl4i77hi8jkkw7d06mgdw2h458ljxh0b";
30 };
31
32 # See: https://review.openstack.org/#/c/608382/
33 patches = [
34 (fetchpatch {
35 url = "https://github.com/openstack/sqlalchemy-migrate/pull/18.patch";
36 sha256 = "1qyfq2m7w7xqf0r9bc2x42qcra4r9k9l9g1jy5j0fvlb6bvvjj07";
37 })
38 ];
39
40 postPatch = ''
41 substituteInPlace test-requirements.txt \
42 --replace "ibm_db_sa>=0.3.0;python_version<'3.0'" "" \
43 --replace "ibm-db-sa-py3;python_version>='3.0'" "" \
44 --replace "tempest-lib>=0.1.0" "" \
45 --replace "testtools>=0.9.34,<0.9.36" "" \
46 --replace "pylint" ""
47 '';
48
49 nativeCheckInputs = [ scripttest pytz testrepository ];
50 propagatedBuildInputs = [ pbr tempita decorator sqlalchemy six sqlparse ];
51
52 doCheck = !stdenv.isDarwin;
53
54 checkPhase = ''
55 export PATH=$PATH:$out/bin
56 echo sqlite:///__tmp__ > test_db.cfg
57 # depends on ibm_db_sa
58 rm migrate/tests/changeset/databases/test_ibmdb2.py
59 # wants very old testtools
60 rm migrate/tests/versioning/test_schema.py
61 # transient failures on py27
62 substituteInPlace migrate/tests/versioning/test_util.py --replace "test_load_model" "noop"
63 ${python.interpreter} setup.py test
64 '';
65
66 meta = with lib; {
67 homepage = "https://opendev.org/x/sqlalchemy-migrate";
68 description = "Schema migration tools for SQLAlchemy";
69 license = licenses.asl20;
70 maintainers = teams.openstack.members ++ (with maintainers; [ makefu ]);
71 broken = lib.versionAtLeast sqlalchemy.version "2.0.0";
72 };
73}