diff --git a/environment.yml b/environment.yml index 692109a5..1578f243 100644 --- a/environment.yml +++ b/environment.yml @@ -3,7 +3,8 @@ channels: - conda-forge - bioconda dependencies: - - python>=3.9,<3.11 + - python>3.8,<3.11 + - setuptools<80.9 - cython==0.29.32 - biopython==1.79 - docutils==0.19 diff --git a/pyproject.toml b/pyproject.toml index 119b5a3b..79e66ef1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["setuptools==65.4.1","wheel==0.37.1","Cython>=0.29.32","numpy==1.23.3","scipy==1.11.1"] +requires = ["setuptools<80.9","wheel==0.37.1","Cython==0.29.32","numpy==1.23.3","scipy==1.11.1"] build-backend = "setuptools.build_meta" -[pytest] +[tool.pytest] markers = ["slow"] diff --git a/requirements.txt b/requirements.txt index dbde9262..7202792e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +setuptools<80.9 cython==0.29.32 biopython==1.79 docutils==0.19 diff --git a/setup.cfg b/setup.cfg index 923f16d6..93d2fe48 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,7 @@ +[options] +setup_requires = + setuptools<80.9 + [aliases] test=pytest diff --git a/setup.py b/setup.py index 3dd192ba..dc7e9d0a 100644 --- a/setup.py +++ b/setup.py @@ -14,8 +14,9 @@ import numpy as np ### See comment here https://github.com/cython/cython/issues/2498 -numpy_nodepr_api = dict(define_macros=[("NPY_NO_DEPRECATED_API", - "NPY_1_9_API_VERSION")]) +numpy_nodepr_api = dict( + define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_9_API_VERSION")] +) here = path.abspath(path.dirname("__file__")) @@ -32,33 +33,52 @@ requirements = [line.rstrip() for line in open("requirements.txt", "rt")] -extensions = [Extension("Mikado.utilities.overlap", - sources=[path.join("Mikado", "utilities", "overlap.pyx")], - **numpy_nodepr_api), - Extension("Mikado.utilities.f1", - sources=[path.join("Mikado", "utilities", "f1.pyx")], - **numpy_nodepr_api), - Extension("Mikado.scales.contrast", - sources=[path.join("Mikado", "scales", "contrast.pyx")], - **numpy_nodepr_api), - Extension("Mikado.utilities.intervaltree", - sources=[path.join("Mikado", "utilities", "intervaltree.pyx")], - **numpy_nodepr_api), - Extension("Mikado.serializers.blast_serializer.btop_parser", - include_dirs=[np.get_include()], - language="c++", - sources=[path.join("Mikado", "serializers", "blast_serializer", "btop_parser.pyx")], - **numpy_nodepr_api), - Extension("Mikado.serializers.blast_serializer.aln_string_parser", - include_dirs=[np.get_include()], - language="c++", - sources=[path.join("Mikado", "serializers", "blast_serializer", "aln_string_parser.pyx")], - **numpy_nodepr_api) - ] +extensions = [ + Extension( + "Mikado.utilities.overlap", + sources=[path.join("Mikado", "utilities", "overlap.pyx")], + **numpy_nodepr_api, + ), + Extension( + "Mikado.utilities.f1", + sources=[path.join("Mikado", "utilities", "f1.pyx")], + **numpy_nodepr_api, + ), + Extension( + "Mikado.scales.contrast", + sources=[path.join("Mikado", "scales", "contrast.pyx")], + **numpy_nodepr_api, + ), + Extension( + "Mikado.utilities.intervaltree", + sources=[path.join("Mikado", "utilities", "intervaltree.pyx")], + **numpy_nodepr_api, + ), + Extension( + "Mikado.serializers.blast_serializer.btop_parser", + include_dirs=[np.get_include()], + language="c++", + sources=[ + path.join("Mikado", "serializers", "blast_serializer", "btop_parser.pyx") + ], + **numpy_nodepr_api, + ), + Extension( + "Mikado.serializers.blast_serializer.aln_string_parser", + include_dirs=[np.get_include()], + language="c++", + sources=[ + path.join( + "Mikado", "serializers", "blast_serializer", "aln_string_parser.pyx" + ) + ], + **numpy_nodepr_api, + ), +] setup( name="Mikado", - python_requires=">3.6", + python_requires=">3.8,<3.11", version="2.3.4", description="A Python3 annotation program to select the best gene model in each locus", long_description=long_description, @@ -67,6 +87,7 @@ author_email="lucventurini@gmail.com", license="LGPL3", tests_require=["pytest"], + setup_requires=["setuptools<80.9"], classifiers=[ "Development Status :: 5 - Production/Stable", "Topic :: Scientific/Engineering :: Bio-Informatics", @@ -74,37 +95,45 @@ "Operating System :: POSIX :: Linux", "Framework :: Pytest", "Intended Audience :: Science/Research", - 'Programming Language :: Python :: 3.7', - "Programming Language :: Python :: 3.8", - 'Programming Language :: Python :: 3.9' + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ], - ext_modules=cythonize(extensions, compiler_directives = {"language_level": "3"}), + ext_modules=cythonize(extensions, compiler_directives={"language_level": "3"}), zip_safe=False, keywords="rna-seq annotation genomics transcriptomics", packages=find_packages(), scripts=glob.glob("util/*.py"), - entry_points={"console_scripts": ["mikado = Mikado.__main__:main", - "daijin = Mikado.daijin.__main__:main", - ]}, + entry_points={ + "console_scripts": [ + "mikado = Mikado.__main__:main", + "daijin = Mikado.daijin.__main__:main", + ] + }, install_requires=requirements, extras_require={ "postgresql": ["psycopg2"], "mysql": ["mysqlclient>=1.3.6"], - "bam": ["pysam>=0.8"] + "bam": ["pysam>=0.8"], }, package_data={ - "Mikado.configuration": - glob.glob("Mikado/configuration/*json") + glob.glob("Mikado/configuration/*yaml"), - "Mikado.configuration.scoring_files": - glob.glob("Mikado/configuration/scoring_files/*"), - "Mikado": - glob.glob(path.join("Mikado", "daijin", "*smk")) + - glob.glob(path.join("Mikado", "daijin", "*yaml")) + glob.glob("Mikado/daijin/*json"), + "Mikado.configuration": glob.glob("Mikado/configuration/*json") + + glob.glob("Mikado/configuration/*yaml"), + "Mikado.configuration.scoring_files": glob.glob( + "Mikado/configuration/scoring_files/*" + ), + "Mikado": glob.glob(path.join("Mikado", "daijin", "*smk")) + + glob.glob(path.join("Mikado", "daijin", "*yaml")) + + glob.glob("Mikado/daijin/*json"), "Mikado.utilities.overlap": [path.join("Mikado", "utilities", "overlap.pxd")], - "Mikado.utilities.intervaltree": [path.join("Mikado", "utilities", "intervaltree.pxd")], - "Mikado.serializers.blast_serializers": glob.glob(path.join("Mikado", "serializers", "blast_serializers", - "*pxd")), - "Mikado.tests.blast_data": glob.glob(path.join("Mikado", "tests", "blast_data", "*")) - }, - include_package_data=True + "Mikado.utilities.intervaltree": [ + path.join("Mikado", "utilities", "intervaltree.pxd") + ], + "Mikado.serializers.blast_serializers": glob.glob( + path.join("Mikado", "serializers", "blast_serializers", "*pxd") + ), + "Mikado.tests.blast_data": glob.glob( + path.join("Mikado", "tests", "blast_data", "*") + ), + }, + include_package_data=True, )