Skip to content

perf: autobump conda envs#163

Open
johanneskoester wants to merge 2 commits intomainfrom
perf/autobump-envs
Open

perf: autobump conda envs#163
johanneskoester wants to merge 2 commits intomainfrom
perf/autobump-envs

Conversation

@johanneskoester
Copy link
Copy Markdown
Contributor

@johanneskoester johanneskoester commented Feb 6, 2026

Automated changes by create-pull-request GitHub action

Summary by CodeRabbit

  • Chores
    • Added explicit conda environment pin files for deterministic environment recreation across multiple analysis workflows
    • Updated dependency versions including Python, scientific packages (pandas, scipy, scikit-learn, statsmodels), and bioinformatics tools (bcftools, samtools, vembrane, picard, pysam, rtg-tools)

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 6, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 178b939b-5a4e-4b09-aca0-ae3524d14382

📥 Commits

Reviewing files that changed from the base of the PR and between 2995a54 and daa372d.

📒 Files selected for processing (10)
  • workflow/envs/picard.linux-64.pin.txt
  • workflow/envs/pysam.linux-64.pin.txt
  • workflow/envs/pysam.yaml
  • workflow/envs/rtg-tools.linux-64.pin.txt
  • workflow/envs/stats.linux-64.pin.txt
  • workflow/envs/stats.yaml
  • workflow/envs/tools.linux-64.pin.txt
  • workflow/envs/tools.yaml
  • workflow/envs/vembrane.linux-64.pin.txt
  • workflow/envs/vembrane.yaml
✅ Files skipped from review due to trivial changes (8)
  • workflow/envs/tools.yaml
  • workflow/envs/pysam.yaml
  • workflow/envs/picard.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/pysam.linux-64.pin.txt
  • workflow/envs/vembrane.linux-64.pin.txt
🚧 Files skipped from review as they are similar to previous changes (2)
  • workflow/envs/vembrane.yaml
  • workflow/envs/stats.yaml

📝 Walkthrough

Walkthrough

Adds explicit linux-64 Conda environment pin files and updates several environment YAMLs with dependency version bumps for pysam, stats, tools, and vembrane workflows.

Changes

Cohort / File(s) Summary
Linux-64 Environment Pins
workflow/envs/picard.linux-64.pin.txt, workflow/envs/pysam.linux-64.pin.txt, workflow/envs/rtg-tools.linux-64.pin.txt, workflow/envs/stats.linux-64.pin.txt, workflow/envs/tools.linux-64.pin.txt, workflow/envs/vembrane.linux-64.pin.txt
Added @EXPLICIT conda pin files listing fully-qualified package URLs and hashes for deterministic linux-64 environment creation.
YAML Environment Specs
workflow/envs/pysam.yaml, workflow/envs/stats.yaml, workflow/envs/tools.yaml, workflow/envs/vembrane.yaml
Bumped dependency versions (Python and select packages: pandas, scipy, scikit-learn, statsmodels, bcftools/samtools, vembrane, dnaio) and normalized file endings/newlines.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • famosab
  • BiancaStoecker

Poem

🐰 I hopped through pins with whiskers all aglow,
URLs and hashes lined up in a row,
Envs locked and tidy for linux-64 cheer,
Repro steps ready — the pathway is clear,
A rabbit's small clap for builds that now flow.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'perf: autobump conda envs' accurately summarizes the main change: automated version bumping of conda environment specifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch perf/autobump-envs

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@famosab
Copy link
Copy Markdown
Collaborator

famosab commented Feb 6, 2026

@johanneskoester do we need the *.linux-64.pin.txt files that are automatically created by this action?

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread workflow/envs/vembrane.linux-64.pin.txt Outdated
Comment on lines +1 to +75
# 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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 8711d42 and 2995a54.

📒 Files selected for processing (10)
  • workflow/envs/picard.linux-64.pin.txt
  • workflow/envs/pysam.linux-64.pin.txt
  • workflow/envs/pysam.yaml
  • workflow/envs/rtg-tools.linux-64.pin.txt
  • workflow/envs/stats.linux-64.pin.txt
  • workflow/envs/stats.yaml
  • workflow/envs/tools.linux-64.pin.txt
  • workflow/envs/tools.yaml
  • workflow/envs/vembrane.linux-64.pin.txt
  • workflow/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

Comment thread workflow/envs/pysam.yaml
Comment on lines +6 to +9
- 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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 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 SettingWithCopyWarning is removed. pd.options.mode.copy_on_write no longer changes behavior. [1][2]
  • Default string dtype changed: string-like data is now inferred as the dedicated str dtype (not object) when constructing/reading data; can break code that checks dtype == 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). pytz is 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 of ME, QE, YE, etc. [1]
  • pd.offsets.Day behavior 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 ignores sort in 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 NaN in numpy-nullable/pyarrow floating dtypes is treated as missing (often becoming <NA>), and an experimental future option pd.options.future.distinguish_nan_and_na was 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 with StringIO/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 (use sep=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 object to str (affects dtype checks and mixed-type columns)
  • Datetime/timedelta resolution now inferred instead of always nanoseconds
  • Timezone objects default to zoneinfo instead of pytz
  • Offset aliases removed (M, Q, YME, 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants