Conversation
fca7361 to
8711d42
Compare
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (10)
✅ Files skipped from review due to trivial changes (8)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughAdds explicit linux-64 Conda environment pin files and updates several environment YAMLs with dependency version bumps for pysam, stats, tools, and vembrane workflows. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@johanneskoester do we need the *.linux-64.pin.txt files that are automatically created by this action? |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@workflow/envs/vembrane.linux-64.pin.txt`:
- Around line 1-75: The cyvcf2 package is pinned to 0.31.1 in the `@EXPLICIT`
list; update the cyvcf2 entry (the line containing "cyvcf2-0.31.1-...") to
reference version 0.31.4 instead and replace the archived filename and checksum
with the correct 0.31.4 artifact from Bioconda so the explicit environment
installs the newer release; ensure the updated artifact is the linux-64 (or
noarch) build that is compatible with Python 3.12.12.
| # This file may be used to create an environment using: | ||
| # $ conda create --name <env> --file <this file> | ||
| # platform: linux-64 | ||
| # created-by: conda 24.9.2 | ||
| @EXPLICIT | ||
| https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 | ||
| https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda#bddacf101bb4dd0e51811cb69c7790e2 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_17.conda#51b78c6a757575c0d12f4401ffc67029 | ||
| https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda#c3efd25ac4d74b1584d2f7a57195ddf1 | ||
| https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 | ||
| https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d | ||
| https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_17.conda#3c281169ea25b987311400d7a7e28445 | ||
| https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda#51a19bba1b8ebfb60df25cde030b7ebc | ||
| https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda#920bb03579f15389b9e512095ad995b7 | ||
| https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda#b38117a3c920364aff79f870c984b4a3 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda#b422943d5d772b7cc858b36ad2a92db5 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda#8b09ae86839581147ef2e5c5e229d164 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda#a360c33a5abe61c07959e449fa1453eb | ||
| https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_17.conda#1478bfa85224a65ab096d69ffd2af1e5 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_17.conda#202fdf8cad9eea704c2b0d823d1732bf | ||
| https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda#c7c83eecbb72d88b940c249af56c8b17 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_17.conda#24c2fe35fa45cd71214beba6f337c071 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda#db409b7c1720428638e7c0d509d3e1b5 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 | ||
| https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 | ||
| https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda#f61eb8cd60ff9057122a3d338b99c00f | ||
| https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda#a77f85f77be52ff59391544bfe73390a | ||
| https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda#186a18e3ba246eccfc7cff00cd19a870 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b | ||
| https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_17.conda#a6c682ac611cb1fa4d73478f9e6efb06 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_17.conda#ea12f5a6bf12c88c06750d9803e1a570 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc | ||
| https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda#d7d95fc8287ea7bf33e0e7116d2b95ec | ||
| https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda#cffd3bdd58090148f4cfcd831f4b26ab | ||
| https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda#4a13eeac0b5c8e5b8ab496e6c4ddd829 | ||
| https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 | ||
| https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda#12bd9a3f089ee6c9266a37dab82afabd | ||
| https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda#b499ce4b026493a13774bcf0f4c33849 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda#be43915efc66345cccb3c310b6ed0374 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda#da5be73701eecd0e8454423fd6ffcf30 | ||
| https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda#f2cfec9406850991f4e3d960cc9e3321 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda#c160954f7418d7b6e87eaf05a8913fa9 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda#0a5563efed19ca4461cf927419b6eb73 | ||
| https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hd63d673_2_cpython.conda#c4540d3de3fa228d9fa95e31f8e97f89 | ||
| https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda#3c0e753fd317fa10d34020a2bc8add8e | ||
| https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda#ea8a6c3256897cc31263de9f455e25d9 | ||
| https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda#7b2af124684a994217e62c641bca2e48 | ||
| https://conda.anaconda.org/bioconda/linux-64/htslib-1.23-h566b1c6_0.conda#307124911d36a3d976cd76f350085ead | ||
| https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 | ||
| https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda#6636a2b6f1a87572df2970d3ebc87cc0 | ||
| https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda#b38076eb5c8e40d0106beda6f95d7609 | ||
| https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b | ||
| https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda#b76541e68fea4d511b1ac46a28dcd2c6 | ||
| https://conda.anaconda.org/bioconda/linux-64/pysam-0.23.3-py312h47d5410_1.tar.bz2#24e122bc224797801b00f2d26902fb93 | ||
| https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda#15878599a87992e44c059731771591cb | ||
| https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.2-pyh332efcf_0.conda#7b446fcbb6779ee479debb4fd7453e6c | ||
| https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339e3b65d58accf4ca4fb8748ab16b3 | ||
| https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d | ||
| https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d | ||
| https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 | ||
| https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 | ||
| https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de | ||
| https://conda.anaconda.org/conda-forge/noarch/intervaltree-3.1.0-pyhd8ed1ab_1.conda#e32bb5b0369e819c4dde653d4c4572f3 | ||
| https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py312h33ff503_1.conda#3569a8fca2dd3202e4ab08f42499f6d3 | ||
| https://conda.anaconda.org/bioconda/noarch/obonet-1.1.1-pyh7e72e81_0.tar.bz2#734342f550e602f30171eac9ff4eddb0 | ||
| https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 | ||
| https://conda.anaconda.org/conda-forge/noarch/wheel-0.46.3-pyhd8ed1ab_0.conda#bdbd7385b4a67025ac2dba4ef8cb6a8f | ||
| https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda#89d5edf5d52d3bc1ed4d7d3feef508ba | ||
| https://conda.anaconda.org/bioconda/linux-64/bcftools-1.23-h3a4d415_0.conda#51a78d8b2f5a3d373ce369803b5e76e3 | ||
| https://conda.anaconda.org/bioconda/linux-64/cyvcf2-0.31.1-py312hb5e5a98_3.tar.bz2#27aeb5d011f7e51a1e676fbd55f3a157 | ||
| https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh8b19718_0.conda#67bdec43082fd8a9cffb9484420b39a2 | ||
| https://conda.anaconda.org/bioconda/noarch/vembrane-2.4.0-pyhdfd78af_0.conda#81deea70da9875c03779c90609cf0d57 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Python 3.12.12 release security status
💡 Result:
Python 3.12.12 (released October 9, 2025) is explicitly a security release for the legacy Python 3.12 series. [1]
Lifecycle / support status (upstream CPython):
- Python 3.12 is in “security fixes only” mode (no regular bugfix releases). [1][2]
- Releases are source-only and irregular (i.e., no official binary installers for 3.12.x security releases). [1][2]
- This security-fixes-only period is expected to run until October 2028. [1][2]
Security content called out for 3.12.12 (examples):
- Bundled libexpat upgraded to 2.7.3 to fix CVE-2025-59375. [1]
- Security hardening/fixes in zipfile/ZIP64 handling, tarfile validation, and xml.parsers.expat behavior. [1][3]
Sources: Python.org 3.12.12 release page [1], PEP 693 release schedule/lifecycle [2], Python 3.12.12 changelog [3].
🌐 Web query:
vembrane latest version PyPI
💡 Result:
The latest vembrane release on PyPI is 2.4.0 (uploaded Sep 27, 2025). [1]
🌐 Web query:
cyvcf2 latest version PyPI
💡 Result:
The latest cyvcf2 release on PyPI is 0.31.4 (released Oct 13, 2025). [1]
🌐 Web query:
pysam latest version PyPI
💡 Result:
The latest pysam release on PyPI is 0.23.3 (uploaded June 10, 2025). [1]
Update cyvcf2 to 0.31.4 — Python 3.12.12 is current and secure (Oct 2025 security release), and vembrane 2.4.0 and pysam 0.23.3 are at their latest versions. However, cyvcf2 is pinned at 0.31.1 while the latest version is 0.31.4 (Oct 2025). Update the cyvcf2 entry to use 0.31.4.
🤖 Prompt for AI Agents
In `@workflow/envs/vembrane.linux-64.pin.txt` around lines 1 - 75, The cyvcf2
package is pinned to 0.31.1 in the `@EXPLICIT` list; update the cyvcf2 entry (the
line containing "cyvcf2-0.31.1-...") to reference version 0.31.4 instead and
replace the archived filename and checksum with the correct 0.31.4 artifact from
Bioconda so the explicit environment installs the newer release; ensure the
updated artifact is the linux-64 (or noarch) build that is compatible with
Python 3.12.12.
8711d42 to
2995a54
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@workflow/envs/pysam.yaml`:
- Around line 6-9: The environment bumps pandas to 3.0.1 which introduces
breaking changes; audit any code that imports/uses pandas (calls to
pandas.read_csv / read_excel, DataFrame assignments/chained indexing, dtype
checks like .dtype or astype, datetime/timedelta parsing, timezone handling, and
any use of offset aliases 'M','Q','Y') and either adjust the code to the new
behaviors (avoid chained assignment or use .copy(), handle default string dtype
and mixed-type columns, adapt datetime resolution and zoneinfo tz handling,
replace offset aliases with 'ME','QE','YE', and ensure IO readers receive proper
file-like objects instead of raw bytes/strings) or pin pandas back to a 2.x
release in pysam.yaml; update tests that assert dtype/tz/offset behavior
accordingly.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
workflow/envs/picard.linux-64.pin.txtworkflow/envs/pysam.linux-64.pin.txtworkflow/envs/pysam.yamlworkflow/envs/rtg-tools.linux-64.pin.txtworkflow/envs/stats.linux-64.pin.txtworkflow/envs/stats.yamlworkflow/envs/tools.linux-64.pin.txtworkflow/envs/tools.yamlworkflow/envs/vembrane.linux-64.pin.txtworkflow/envs/vembrane.yaml
🚧 Files skipped from review as they are similar to previous changes (7)
- workflow/envs/vembrane.linux-64.pin.txt
- workflow/envs/picard.linux-64.pin.txt
- workflow/envs/pysam.linux-64.pin.txt
- workflow/envs/tools.linux-64.pin.txt
- workflow/envs/rtg-tools.linux-64.pin.txt
- workflow/envs/stats.linux-64.pin.txt
- workflow/envs/stats.yaml
| - python =3.13.12 | ||
| - pysam =0.23.3 | ||
| - pandas =2.3.0 | ||
| - dnaio =1.2 | ||
|
No newline at end of file |
||
| - pandas =3.0.1 | ||
| - dnaio =1.2.3 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
pandas 3.0 release breaking changes API
💡 Result:
Key pandas 3.0.0 (released Jan 21, 2026) breaking / behavior-changing API changes (non-exhaustive, but the big ones): [3]
Big semantic defaults that can break code
- Copy-on-Write (CoW) is now the default (and effectively the rule): any indexing/subsetting or method returning a new Series/DataFrame behaves like a copy from the user’s perspective; chained assignment will no longer work, and
SettingWithCopyWarningis removed.pd.options.mode.copy_on_writeno longer changes behavior. [1][2] - Default string dtype changed: string-like data is now inferred as the dedicated
strdtype (notobject) when constructing/reading data; can break code that checksdtype == object, relies on mixed-object string columns, or assumes specific missing-value sentinels. [1][2]
Datetime / timezones
- Datetime/timedelta resolution is now inferred instead of always forcing nanoseconds: e.g. string parsing defaults to microseconds unless nanosecond precision is present; affects constructors and
to_datetime,to_timedelta,date_range,Timestamp, etc. [1] - Timezone objects from strings now default to
zoneinfo(stdlib).pytzis optional and is no longer returned by default when you pass timezone strings. [1] - Offset alias removals enforced: aliases like
M,Q,Y, etc. are removed in favor ofME,QE,YE, etc. [1] pd.offsets.Daybehavior changed: now always represents a calendar day across DST transitions (preserves local time-of-day), not a fixed 24-hour span. [1]
DataFrame/Series behavior changes
pd.concat(..., sort=False)no longer ignoressortin certain DatetimeIndex cases (can change output ordering), and related internal concat sorting inconsistencies were fixed. [1]DataFrame.value_counts(sort=False)/GroupBy.value_counts(sort=False)ordering changed (more consistent “within-group” ordering; can change result order). [1]- Nullable floating / pyarrow-backed NA handling changed: arithmetic-produced
NaNin numpy-nullable/pyarrow floating dtypes is treated as missing (often becoming<NA>), and an experimental future optionpd.options.future.distinguish_nan_and_nawas introduced. [1]
Packaging / compatibility
- Python >= 3.11 required (dropping older versions). [1]
__module__for public API objects now points to public modules (can break doctests/introspection that compare__module__). [1]
Notable removals / stricter APIs (examples)
- Several IO readers (
read_excel/read_json/read_html/read_xml) no longer accept raw string/bytes data directly; wrap withStringIO/BytesIO. [1] Series.__getitem__/__setitem__with integer keys now always treats integers as labels (not positional), aligning with DataFrame behavior. [1]read_csv(..., delim_whitespace=...)removed (usesep=r"\s+"). [1]
For the authoritative full list, see the “Backwards incompatible API changes” + “Removal of prior version deprecations/changes” sections in the 3.0.0 release notes. [1]
🌐 Web query:
Python 3.13.12 release
💡 Result:
Python 3.13.12 (the 12th maintenance/bugfix release in the Python 3.13 series) was released on February 3, 2026. [1][3]
Key details:
- It’s a bugfix / maintenance release (Python.org notes ~240 fixes/docs/build changes since 3.13.11). [1]
- The 3.13.12 final changelog entries are in the 3.13 docs changelog (e.g., fixes for Windows/PyREPL and tooling/tests). [5]
- Official downloads (Windows/macOS installers and source tarballs) are provided on the Python.org Python 3.13.12 release page. [1]
🌐 Web query:
pysam 0.23.3 Python 3.13 compatibility
💡 Result:
Yes—pysam 0.23.3 is compatible with Python 3.13.
- The 0.23.3 release notes (dated June 10, 2025) state it was tested with Python 3.8 through 3.13, and that PyPI wheels are available for all those versions. [1]
- PyPI’s file list for pysam 0.23.3 includes CPython 3.13 wheels (
cp313) for manylinux_2_28 (x86_64, aarch64), musllinux_1_2 (x86_64, aarch64), and macOS (x86_64, arm64). [2]
Note: As of 0.23.3, wheels are provided for Linux and macOS; if you’re on Windows, you may need to build from source. [1]
Sources: [1] [2]
Review code for pandas 3.0 breaking changes.
pandas 3.0.1 is a major version bump (2.x → 3.x) with significant API changes that require code review:
- Copy-on-Write (CoW) is now default, breaking chained assignment patterns
- Default string dtype changed from
objecttostr(affects dtype checks and mixed-type columns) - Datetime/timedelta resolution now inferred instead of always nanoseconds
- Timezone objects default to
zoneinfoinstead ofpytz - Offset aliases removed (
M,Q,Y→ME,QE,YE) - IO readers (
read_csv,read_excel, etc.) no longer accept raw strings/bytes directly
Verify any workflow scripts using this environment are compatible with these changes. Python 3.13.12 and pysam 0.23.3 are compatible with no issues.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflow/envs/pysam.yaml` around lines 6 - 9, The environment bumps pandas to
3.0.1 which introduces breaking changes; audit any code that imports/uses pandas
(calls to pandas.read_csv / read_excel, DataFrame assignments/chained indexing,
dtype checks like .dtype or astype, datetime/timedelta parsing, timezone
handling, and any use of offset aliases 'M','Q','Y') and either adjust the code
to the new behaviors (avoid chained assignment or use .copy(), handle default
string dtype and mixed-type columns, adapt datetime resolution and zoneinfo tz
handling, replace offset aliases with 'ME','QE','YE', and ensure IO readers
receive proper file-like objects instead of raw bytes/strings) or pin pandas
back to a 2.x release in pysam.yaml; update tests that assert dtype/tz/offset
behavior accordingly.
3c7f877 to
daa372d
Compare
Automated changes by create-pull-request GitHub action
Summary by CodeRabbit