From 6019ab9d08f902e250242760fd44e4d602ea8d82 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 7 Mar 2025 18:32:54 -0500 Subject: [PATCH 1/9] pseudo-modernize package install metadata --- pybedtools/version.py | 2 +- pyproject.toml | 14 ++++++++++++-- setup.cfg | 4 ++-- setup.py | 26 ++++++++++---------------- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/pybedtools/version.py b/pybedtools/version.py index 2efba6f2..9260f8d0 100644 --- a/pybedtools/version.py +++ b/pybedtools/version.py @@ -1,4 +1,4 @@ # THIS FILE IS GENERATED FROM SETUP.PY -version = '0.11.0' +version = '0.12.0' __version__ = version \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 4b2126a8..4eff1655 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,13 @@ [build-system] -requires = ["setuptools>=61.0", "wheel", "Cython>=0.29.30,<3.0"] -build-backend = "setuptools.build_meta:__legacy__" \ No newline at end of file +requires = ["setuptools>=61.0", "wheel", "Cython>=3.0"] +build-backend = "setuptools.build_meta:__legacy__" + +[project] +name = "pybedtools" +dynamic = ["version", "maintainers", "license", "classifiers", "readme"] +description='Wrapper around BEDTools for bioinformatics work' +dependencies = [ + "numpy", + "pysam", + "pandas" +] diff --git a/setup.cfg b/setup.cfg index e7a90a34..df7d0d67 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ -[wheel] -universal = 1 +[bdist_wheel] + [nosetests] detailed-errors = 1 doctest-extension = .pyx .py diff --git a/setup.py b/setup.py index 3c374f67..51ab2e06 100644 --- a/setup.py +++ b/setup.py @@ -52,12 +52,7 @@ # Try bootstrapping setuptools if it doesn't exist. This is for using the # `develop` command, which is very useful for in-place development work. try: - import pkg_resources - try: - pkg_resources.require("setuptools>=0.6c5") - except pkg_resources.VersionConflict: - from ez_setup import use_setuptools - use_setuptools(version="0.6c5") + import setuptools from setuptools import setup, Command except ImportError: sys.exit( @@ -68,15 +63,15 @@ curdir = os.path.abspath(os.path.dirname(__file__)) # These imports need to be here; setuptools needs to be imported first. -from distutils.extension import Extension # noqa: E402 -from distutils.command.build import build # noqa: E402 -from distutils.command.build_ext import build_ext # noqa: E402 -from distutils.command.sdist import sdist # noqa: E402 -import distutils.log - +from setuptools.extension import Extension # noqa: E402 +from setuptools.command.build import build # noqa: E402 +from setuptools.command.build_ext import build_ext # noqa: E402 +from setuptools.command.sdist import sdist # noqa: E402 +import setuptools.logging +setuptools.logging.configure() MAJ = 0 -MIN = 11 +MIN = 12 REV = 0 VERSION = '%d.%d.%d' % (MAJ, MIN, REV) @@ -209,7 +204,7 @@ def build_extensions(self): ''') self.announce( "Trying to generate the following missing files:\n%s" % "\n".join(missing_src), - level=distutils.log.INFO) + level=0) for src in missing_src: assert src in ext.sources (root, extn) = os.path.splitext(src) @@ -324,6 +319,5 @@ def run(self): "*.h"], 'src': ['src/*'], }, - include_package_data=True, - language_level=2, + include_package_data=True ) From 9f35b4a4118d46ec32ce2a39a587987bd0fbd1a5 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Mon, 10 Mar 2025 10:20:42 -0400 Subject: [PATCH 2/9] add 3.13 to tests --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a456f8be..a7b5ad17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: build-and-test: strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From a82a17fa882cc031bb1526be074f4c9854e4bea0 Mon Sep 17 00:00:00 2001 From: Ryan Dale <115406+daler@users.noreply.github.com> Date: Mon, 10 Mar 2025 10:59:27 -0400 Subject: [PATCH 3/9] add cython>3.0 to test setup --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a7b5ad17..643a808e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,7 +42,7 @@ jobs: # with pip to make sure it works. run: | source "${HOME}/conda/etc/profile.d/conda.sh" - conda create -p ./cython-env -y "cython>=0.29.30,<3.0" python=${{ matrix.python-version }} gxx zlib --channel conda-forge + conda create -p ./cython-env -y "cython>3.0" python=${{ matrix.python-version }} gxx zlib --channel conda-forge conda activate ./cython-env python setup.py clean cythonize sdist (cd dist && pip install pybedtools-*.tar.gz && cd $TMPDIR && python -c 'import pybedtools; print(pybedtools.__file__)') From e91bd9ee2e8a15bcaa2bf7ef6902441994e2351e Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Tue, 11 Mar 2025 14:03:42 -0400 Subject: [PATCH 4/9] Cython.Build.build_ext no longer needed --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index 51ab2e06..deef9f91 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,6 @@ """ try: - from Cython.Build import build_ext as cython_build_ext from Cython.Build import cythonize HAVE_CYTHON = True except ImportError: @@ -261,7 +260,6 @@ def run(self): } if USE_CYTHON: - cmdclass['build_ext'] = cython_build_ext cmdclass['cythonize'] = Cythonize else: cmdclass['build_ext'] = InformativeBuildExt From 2f7451dadb000b9531e57d3fa417a91cf6123532 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Tue, 11 Mar 2025 14:31:01 -0400 Subject: [PATCH 5/9] add language-level 3str to cbedtools.pxd --- pybedtools/cbedtools.pxd | 1 + 1 file changed, 1 insertion(+) diff --git a/pybedtools/cbedtools.pxd b/pybedtools/cbedtools.pxd index 98faec9f..82223a5c 100644 --- a/pybedtools/cbedtools.pxd +++ b/pybedtools/cbedtools.pxd @@ -1,3 +1,4 @@ +# cython: language_level=3str from cpython cimport bool from libcpp.vector cimport vector from libcpp.string cimport string From 2da88503603c6b896c374da62c70023fa34e7ac1 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Tue, 11 Mar 2025 16:19:44 -0400 Subject: [PATCH 6/9] install setuptools in test env --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 643a808e..33efd207 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,7 +42,7 @@ jobs: # with pip to make sure it works. run: | source "${HOME}/conda/etc/profile.d/conda.sh" - conda create -p ./cython-env -y "cython>3.0" python=${{ matrix.python-version }} gxx zlib --channel conda-forge + conda create -p ./cython-env -y "cython>3.0" python=${{ matrix.python-version }} gxx zlib setuptools --channel conda-forge conda activate ./cython-env python setup.py clean cythonize sdist (cd dist && pip install pybedtools-*.tar.gz && cd $TMPDIR && python -c 'import pybedtools; print(pybedtools.__file__)') From 15ba68c0b76cb9f101bb7d635636faf5b652c679 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 14 Mar 2025 16:13:22 -0400 Subject: [PATCH 7/9] explicitly export the cpdef from cbedtools --- pybedtools/__init__.py | 1 + pybedtools/featurefuncs.pyx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pybedtools/__init__.py b/pybedtools/__init__.py index 32771e51..ff58de18 100644 --- a/pybedtools/__init__.py +++ b/pybedtools/__init__.py @@ -12,6 +12,7 @@ Attributes, MalformedBedLineError, IntervalIterator, + create_interval_from_list, ) from . import contrib from .helpers import ( diff --git a/pybedtools/featurefuncs.pyx b/pybedtools/featurefuncs.pyx index 86d15e22..6f302990 100644 --- a/pybedtools/featurefuncs.pyx +++ b/pybedtools/featurefuncs.pyx @@ -1,7 +1,7 @@ # cython: language_level=2 # distutils: language = c++ from cbedtools cimport Interval -from cbedtools import create_interval_from_list +from pybedtools.cbedtools import create_interval_from_list cpdef extend_fields(Interval feature, int n): From 1a2450fff37714938e590be1de5f139ec1489eee Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 14 Mar 2025 16:13:34 -0400 Subject: [PATCH 8/9] overriding warning --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index deef9f91..bf234d24 100644 --- a/setup.py +++ b/setup.py @@ -289,7 +289,6 @@ def run(self): long_description=README, zip_safe=False, setup_requires=[], - install_requires=['pysam', 'numpy'], classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Science/Research', From 8637d740f1c3ab56747a74aff5d140f46894add3 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 14 Mar 2025 16:16:49 -0400 Subject: [PATCH 9/9] skip setup files in test collection --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 4eff1655..a2894bf0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,3 +11,5 @@ dependencies = [ "pysam", "pandas" ] +[tool.pytest.ini_options] +testpaths = ["pybedtools"]