[med-svn] [Git][med-team/python-parasail][master] 10 commits: Fix watchfile to detect new versions on github
Andreas Tille (@tille)
gitlab at salsa.debian.org
Mon Dec 5 17:13:00 GMT 2022
Andreas Tille pushed to branch master at Debian Med / python-parasail
Commits:
b6cbcd8b by Andreas Tille at 2022-01-29T07:57:17+01:00
Fix watchfile to detect new versions on github
- - - - -
347898c3 by Andreas Tille at 2022-01-29T07:57:17+01:00
routine-update: Packaging update
- - - - -
ca739d67 by Andreas Tille at 2022-01-29T07:57:18+01:00
routine-update: Standards-Version: 4.6.0
- - - - -
acdc7cdb by Andreas Tille at 2022-01-29T07:58:36+01:00
routine-update: Ready to upload to unstable
- - - - -
206e8c82 by Andreas Tille at 2022-12-05T18:07:27+01:00
Fix watch file
- - - - -
0c3bbc3e by Andreas Tille at 2022-12-05T18:07:42+01:00
routine-update: New upstream version
- - - - -
354e1d98 by Andreas Tille at 2022-12-05T18:07:43+01:00
New upstream version 1.3.3
- - - - -
1aaa1c69 by Andreas Tille at 2022-12-05T18:07:44+01:00
Update upstream source from tag 'upstream/1.3.3'
Update to upstream version '1.3.3'
with Debian dir e449ec61e3c097ed99a3a0a264d5ca732ceed6ac
- - - - -
e59ad57f by Andreas Tille at 2022-12-05T18:07:45+01:00
routine-update: Standards-Version: 4.6.1
- - - - -
29c85194 by Andreas Tille at 2022-12-05T18:12:25+01:00
routine-update: Ready to upload to unstable
- - - - -
10 changed files:
- CHANGELOG.rst
- MANIFEST.in
- README.rst
- debian/changelog
- debian/control
- debian/watch
- parasail/__init__.py
- parasail/bindings_v2.py
- setup.py
- tools/ctypesgen2.py
Changes:
=====================================
CHANGELOG.rst
=====================================
@@ -10,9 +10,33 @@ Unreleased_
-----------
The Unreleased section will be empty for tagged releases. Unreleased functionality appears in the develop branch.
-------------------
-1.2.4 - 2021-02-06
-------------------
+-------------------
+1.3.3_ - 2022-08-26
+-------------------
+- CI improvements
+ - build all wheel targets in parallel
+ - run tests as part of build
+- fix win_amd64 wheel builds
+
+-------------------
+1.3.2_ - 2022-08-25
+-------------------
+- Version bump to force rebuilding of wheels
+
+-------------------
+1.3.1_ - 2022-08-24
+-------------------
+- Fix macos wheel build
+- Add C parasail headers into wheels, add get_include() and get_library()
+
+-----------------
+1.3_ - 2022-08-22
+-----------------
+- Add bindings for sg_qb_db and sg_qe_de
+
+-------------------
+1.2.4_ - 2021-02-06
+-------------------
- Fix #60 Missing wheels on PyPI
-------------------
@@ -163,7 +187,11 @@ The Unreleased section will be empty for tagged releases. Unreleased functionali
-------------------
First tagged release. The 'master' branch always represents the latest stable code. Tagged releases correspond to pypi releases.
-.. _Unreleased: https://github.com/jeffdaily/parasail-python/compare/v1.2.3...master
+.. _Unreleased: https://github.com/jeffdaily/parasail-python/compare/v1.3.3...master
+.. _1.3.3: https://github.com/jeffdaily/parasail-python/compare/v1.3.2...v1.3.3
+.. _1.3.2: https://github.com/jeffdaily/parasail-python/compare/v1.3.1...v1.3.2
+.. _1.3.1: https://github.com/jeffdaily/parasail-python/compare/v1.3...v1.3.1
+.. _1.3: https://github.com/jeffdaily/parasail-python/compare/v1.2.4...v1.3
.. _1.2.4: https://github.com/jeffdaily/parasail-python/compare/v1.2.3...v1.2.4
.. _1.2.3: https://github.com/jeffdaily/parasail-python/compare/v1.2.2...v1.2.3
.. _1.2.2: https://github.com/jeffdaily/parasail-python/compare/v1.2.1...v1.2.2
=====================================
MANIFEST.in
=====================================
@@ -9,6 +9,7 @@ include parasail/bindings_v2.py
exclude parasail/libparasail.so
exclude parasail/libparasail.dylib
exclude parasail/parasail.dll
+recursive-exclude parasail/include *.h
include setup.cfg
include setup.py
include tests/test_basic.py
=====================================
README.rst
=====================================
@@ -117,21 +117,23 @@ Standard Function Naming Convention
There are many functions within the parasail library, but most are variations of the familiar main
algorithms. The following table describes the main algorithms and the shorthand name used for the function.
-=================================================================================== =============
-Algorithm Function Name
-=================================================================================== =============
-Smith-Waterman local alignment sw
-Needleman-Wunsch global alignment nw
-Semi-Global, do not penalize gaps at beginning of s1/query sg_qb
-Semi-Global, do not penalize gaps at end of s1/query sg_qe
-Semi-Global, do not penalize gaps at beginning and end of s1/query sg_qx
-Semi-Global, do not penalize gaps at beginning of s2/database sg_db
-Semi-Global, do not penalize gaps at end of s2/database sg_de
-Semi-Global, do not penalize gaps at beginning and end of s2/database sg_dx
-Semi-Global, do not penalize gaps at beginning of s1/query and end of s2/database sg_qb_de
-Semi-Global, do not penalize gaps at beginning of s2/database and end of s1/query sg_qe_db
-Semi-Global, do not penalize gaps at beginning and end of both sequences sg
-=================================================================================== =============
+========================================================================================= =============
+Algorithm Function Name
+========================================================================================= =============
+Smith-Waterman local alignment sw
+Needleman-Wunsch global alignment nw
+Semi-Global, do not penalize gaps at beginning of s1/query sg_qb
+Semi-Global, do not penalize gaps at end of s1/query sg_qe
+Semi-Global, do not penalize gaps at beginning and end of s1/query sg_qx
+Semi-Global, do not penalize gaps at beginning of s2/database sg_db
+Semi-Global, do not penalize gaps at end of s2/database sg_de
+Semi-Global, do not penalize gaps at beginning and end of s2/database sg_dx
+Semi-Global, do not penalize gaps at beginning of s1/query and end of s2/database sg_qb_de
+Semi-Global, do not penalize gaps at beginning of s2/database and end of s1/query sg_qe_db
+Semi-Global, do not penalize gaps at beginning of s1/query and beginning of s2/database sg_qb_db
+Semi-Global, do not penalize gaps at end of s2/database and end of s1/query sg_qe_de
+Semi-Global, do not penalize gaps at beginning and end of both sequences sg
+========================================================================================= =============
A good summary of the various alignment algorithms can be found courtesy of Dr. Dannie Durand's course on
computational genomics `here <http://www.cs.cmu.edu/~durand/03-711/2015/Lectures/PW_sequence_alignment_2015.pdf>`_.
@@ -145,13 +147,13 @@ To make it easier to find the function you're looking for, the function names fo
- Optional return alignment statistics.
- Optional return DP table or last row/col.
- Optional use a prefix scan implementation.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} [_stats] [{_table,_rowcol}] [_scan]``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} [_stats] [{_table,_rowcol}] [_scan]``
- Non-vectorized, traceback-capable reference implementations.
- Required, select algorithm from table above.
- Optional use a prefix scan implementation.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} _trace [_scan]``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} _trace [_scan]``
- Vectorized.
@@ -160,14 +162,14 @@ To make it easier to find the function you're looking for, the function names fo
- Optional return DP table or last row/col.
- Required, select vectorization strategy -- striped is a good place to start, but scan is often faster for global alignment.
- Required, select solution width. 'sat' will attempt 8-bit solution but if overflow is detected it will then perform the 16-bit operation. Can be faster in some cases, though 16-bit is often sufficient.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} [_stats] [{_table,_rowcol}] {_striped,_scan,_diag} {_8,_16,_32,_64,_sat}``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} [_stats] [{_table,_rowcol}] {_striped,_scan,_diag} {_8,_16,_32,_64,_sat}``
- Vectorized, traceback-capable.
- Required, select algorithm from table above.
- Required, select vectorization strategy -- striped is a good place to start, but scan is often faster for global alignment.
- Required, select solution width. 'sat' will attempt 8-bit solution but if overflow is detected it will then perform the 16-bit operation. Can be faster in some cases, though 16-bit is often sufficient.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} _trace {_striped,_scan,_diag} {_8,_16,_32,_64,_sat}``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} _trace {_striped,_scan,_diag} {_8,_16,_32,_64,_sat}``
Profile Function Naming Convention
----------------------------------
@@ -191,14 +193,14 @@ It has been noted in literature that some performance can be gained by reusing t
- Optional return DP table or last row/col.
- Required, select vectorization strategy -- striped is a good place to start, but scan is often faster for global alignment.
- Required, select solution width. 'sat' will attempt 8-bit solution but if overflow is detected it will then perform the 16-bit operation. Can be faster in some cases, though 16-bit is often sufficient.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} [_stats] [{_table,_rowcol}] {_striped,_scan} _profile {_8,_16,_32,_64,_sat}``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} [_stats] [{_table,_rowcol}] {_striped,_scan} _profile {_8,_16,_32,_64,_sat}``
- Vectorized, traceback-capable.
- Required, select algorithm from table above.
- Required, select vectorization strategy -- striped is a good place to start, but scan is often faster for global alignment.
- Required, select solution width. 'sat' will attempt 8-bit solution but if overflow is detected it will then perform the 16-bit operation. Can be faster in some cases, though 16-bit is often sufficient.
- - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sw} _trace {_striped,_scan} _profile {_8,_16,_32,_64,_sat}``
+ - ``parasail. {nw,sg,sg_qb,sg_qe,sg_qx,sg_db,sg_de,sg_dx,sg_qb_de,sg_qe_db,sg_qb_db,sg_qe_de,sw} _trace {_striped,_scan} _profile {_8,_16,_32,_64,_sat}``
Please note that the bit size you select for creating the profile *must* match the bit size of the function you call. The example below uses a 16-bit profile and a 16-bit function.
=====================================
debian/changelog
=====================================
@@ -1,3 +1,19 @@
+python-parasail (1.3.3-1) unstable; urgency=medium
+
+ * Fix watch file
+ * New upstream version
+ * Standards-Version: 4.6.1 (routine-update)
+
+ -- Andreas Tille <tille at debian.org> Mon, 05 Dec 2022 18:08:14 +0100
+
+python-parasail (1.2.4-3) unstable; urgency=medium
+
+ * Fix watchfile to detect new versions on github
+ * Packaging update
+ * Standards-Version: 4.6.0 (routine-update)
+
+ -- Andreas Tille <tille at debian.org> Sat, 29 Jan 2022 07:57:27 +0100
+
python-parasail (1.2.4-1) unstable; urgency=medium
* New upstream version 1.2.4
=====================================
debian/control
=====================================
@@ -11,7 +11,7 @@ Build-Depends: debhelper-compat (= 13),
python3-wheel,
libparasail-dev,
python3-pytest <!nocheck>
-Standards-Version: 4.5.1
+Standards-Version: 4.6.1
Vcs-Browser: https://salsa.debian.org/med-team/python-parasail
Vcs-Git: https://salsa.debian.org/med-team/python-parasail.git
Homepage: https://github.com/jeffdaily/parasail-python
=====================================
debian/watch
=====================================
@@ -1,4 +1,4 @@
version=4
opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%@PACKAGE at -$1.tar.gz%" \
-https://github.com/jeffdaily/parasail-python/releases .*/archive/.*/v?(\d[\d.]+)\.tar\.gz
+ https://github.com/jeffdaily/parasail-python/tags .*/v?(\d[\d.]+)\.tar\.gz
=====================================
parasail/__init__.py
=====================================
@@ -6,7 +6,7 @@ import sys
import numpy
-__version__ = "1.2.4"
+__version__ = "1.3.3"
__title__ = "parasail"
__description__ = "pairwise sequence alignment library"
__uri__ = "https://github.com/jeffdaily/parasail-python"
@@ -23,6 +23,7 @@ if platform.system() == 'Darwin':
elif platform.system() == 'Windows':
_libname = "parasail.dll"
_libpath = os.path.join(os.path.dirname(__file__), _libname)
+_includepath = os.path.join(os.path.dirname(__file__), "include")
_verbose = os.environ.get("PARASAIL_VERBOSE", False)
@@ -92,3 +93,12 @@ if major == 1:
else:
from parasail.bindings_v2 import *
+def get_include():
+ """ Returns the path of the Parasail C library include files.
+ """
+ return _includepath
+
+def get_library():
+ """ Returns the path of the Parasail C library shared object file.
+ """
+ return _libpath
=====================================
parasail/bindings_v2.py
=====================================
The diff for this file was not included because it is too large.
=====================================
setup.py
=====================================
@@ -13,6 +13,7 @@ except ImportError:
import tarfile
import zipfile
+from distutils.dir_util import copy_tree
from distutils.util import get_platform
from setuptools import setup
from setuptools.command.install import install as install_
@@ -55,8 +56,8 @@ HERE = os.path.abspath(os.path.dirname(__file__))
def is_python_64bit():
- import struct
- return struct.calcsize('P')*8 == 64
+ import sys
+ return sys.maxsize > 2**32
def read(*parts):
"""
@@ -93,6 +94,11 @@ def get_libname():
libname = "parasail.dll"
return libname
+def get_includes():
+ return ["include/*.h",
+ "include/parasail/*.h",
+ "include/parasail/matrices/*.h"]
+
def unzip(archive, destdir):
thefile=zipfile.ZipFile(archive)
thefile.extractall(destdir)
@@ -364,6 +370,16 @@ def build_parasail(libname):
print("copying {} to {}".format(src,dst))
shutil.copy(src,dst)
+ # copy headers into the parasail directory, so they can be added to the wheel
+ parasail_headers = os.path.join(parasail_root, "parasail")
+ dst = os.path.join("parasail", "include", "parasail")
+ print("copying {} to {}".format(parasail_headers, dst))
+ copy_tree(parasail_headers, dst)
+ parasail_h = os.path.join(parasail_root, "parasail.h")
+ dst = os.path.join("parasail", "include")
+ print("copying {} to {}".format(parasail_h, dst))
+ shutil.copy(parasail_h, dst)
+
def github_api_json(address):
import json
import sys
@@ -421,9 +437,9 @@ def download_windows_dll():
else:
# we failed all the attempts - deal with the consequences.
raise RuntimeError("All attempts to download asset URL have failed")
- destdir = archive.rsplit('.',1)[0]
+ unzipped_archive_destination = archive.rsplit('.',1)[0]
print("Unzipping {}".format(archive))
- unzip(archive, destdir)
+ unzip(archive, unzipped_archive_destination)
print("Locating {}".format(libname))
root = find_file(libname)
src = os.path.join(root, libname)
@@ -431,6 +447,15 @@ def download_windows_dll():
print("copying {} to {}".format(src,dst))
shutil.copy(src,dst)
+ # copy headers into the parasail directory, so they can be added to the wheel
+ headers_src = os.path.join(root, "..", "include")
+ dst = os.path.join("parasail", "include")
+ print("copying {} to {}".format(headers_src, dst))
+ copy_tree(headers_src, dst)
+
+ # clean up downloaded asset
+ shutil.rmtree(unzipped_archive_destination)
+
def prepare_shared_lib():
libname = get_libname()
libpath = os.path.join("parasail", libname)
@@ -443,6 +468,8 @@ def prepare_shared_lib():
download_windows_dll()
else:
build_parasail(libname)
+ else:
+ print("{} found, skipping build".format(libpath))
if not os.path.exists(libpath):
raise RuntimeError("Unable to find shared library {}.".format(libname))
@@ -470,6 +497,16 @@ if __name__ == "__main__":
except ImportError:
cmdclass = {'install': install}
+ # cibuildwheel for windows wasn't properly cleaning up after each build
+ # it is necessary to fully remove the build directory once at the beginning
+ # prior to building.
+ if platform.system() == "Windows":
+ if os.path.exists("build"):
+ print("Removing old build directory")
+ shutil.rmtree("build")
+ else:
+ print("No previous build directory detected")
+
long_description = ""
try:
long_description = open("README.rst", encoding="utf8").read()
@@ -488,7 +525,7 @@ if __name__ == "__main__":
maintainer_email=find_meta("email"),
keywords=KEYWORDS,
packages=PACKAGES,
- package_data={"parasail": [get_libname()]},
+ package_data={"parasail": [get_libname()] + get_includes()},
cmdclass=cmdclass,
zip_safe=False,
classifiers=CLASSIFIERS,
=====================================
tools/ctypesgen2.py
=====================================
@@ -1068,7 +1068,7 @@ _argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_char_p, ctypes.c_int, ctype
""")
# serial reference implementations
-alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db"]
+alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db", "sg_qb_db", "sg_qe_de"]
stats = ["", "_stats"]
table = ["", "_table", "_rowcol", "_trace"]
for a in alg:
@@ -1087,7 +1087,7 @@ for a in alg:
myprint(" "*8+"len(s1), len(s2))")
## serial scan reference implementations
-alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db"]
+alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db", "sg_qb_db", "sg_qe_de"]
stats = ["", "_stats"]
table = ["", "_table", "_rowcol", "_trace"]
for a in alg:
@@ -1106,7 +1106,7 @@ for a in alg:
myprint(" "*8+"len(s1), len(s2))")
# vectorized implementations
-alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db"]
+alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db", "sg_qb_db", "sg_qe_de"]
stats = ["", "_stats"]
table = ["", "_table", "_rowcol", "_trace"]
par = ["_scan", "_striped", "_diag"]
@@ -1133,7 +1133,7 @@ _argtypes = [c_profile_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_int, ctypes.c_
""")
# vectorized profile implementations
-alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db"]
+alg = ["nw", "sg", "sw", "sg_qb", "sg_qe", "sg_qx", "sg_db", "sg_de", "sg_dx", "sg_qb_de", "sg_qe_db", "sg_qb_db", "sg_qe_de"]
stats = ["", "_stats"]
table = ["", "_table", "_rowcol", "_trace"]
par = ["_scan_profile", "_striped_profile"]
View it on GitLab: https://salsa.debian.org/med-team/python-parasail/-/compare/d7e55335990dfd1ab54ec63f69e52590f2b073ac...29c851949417415c98a37b8646eb2e60399c6be8
--
View it on GitLab: https://salsa.debian.org/med-team/python-parasail/-/compare/d7e55335990dfd1ab54ec63f69e52590f2b073ac...29c851949417415c98a37b8646eb2e60399c6be8
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20221205/e192f82a/attachment-0001.htm>
More information about the debian-med-commit
mailing list